摘? 要:Python是比較熱門的一種編程語言,搭建Python的在線實驗平臺可以讓學生隨時隨地開展編程實驗,滿足當前的學習需求。實驗系統(tǒng)的性能是系統(tǒng)可用性的一個瓶頸,文章使用jupyter notebook創(chuàng)建了基礎實驗模塊,然后使用框架頁面之間的通信與調用來優(yōu)化實驗平臺,最后通過實驗驗證了平臺的性能。證實該實驗平臺能夠適用于多用戶、高頻率、高負載的環(huán)境。
關鍵詞:Python;在線實驗;性能優(yōu)化;頁面通信
中圖分類號:TP311.5 ? ? ? 文獻標識碼:A文章編號:2096-4706(2022)01-0011-03
Abstract: Python is a relatively popular programming language. Building an online experimental platform for Python can allow students to carry out programming experiments anytime, anywhere to meet their current learning needs. The performance of the experimental system is a bottleneck of system availability. The paper uses jupyter notebook to create a basic experimental module, and then uses the communication and call between the framework pages to optimize the experimental platform. Finally, the performance of the platform is verified by experiments. It is confirmed that the experimental platform is suitable for multi-user, high frequency and high load environment.
Keywords: Python; online experiment; performance optimization; page communication
0? 引? 言
Python是目前比較熱門的一種編程語言,在人工智能、數據分析、網絡管理等方面有廣泛的應用[1]。Python是在1989年由Guido van Rossum設計開發(fā)的,本身由其他語言發(fā)展而來,包括C、C++、ABC、Modula-3、Unix shell和一些腳本語言。因此它所寫的腳本能夠和其他大部分語言一起使用,例如C、C++、Java、JavaScript,所以說它是一種編程語言的膠水[2]。Python是一種解釋性語言,沒有編譯環(huán)節(jié),它提供了豐富的基礎庫,并且第三方庫也非常多,所以非常適合初學者[3]。
因此,目前對于Python語言的學習有比較高的需求,例如高校的計算機語言課程、社會上的計算機職業(yè)技能培訓大都選擇Python。一些地方甚至還把Python語言作為信息技術中學考試科目[4]。
Python是實踐性很強的課程,純粹的理論課堂授課效果并不理想,需要安排充足的實驗練習。由于傳統(tǒng)的實驗室機房練習受到時間地點的約束,而現在手機等智能通訊工具的普及,使用在線Python實驗系統(tǒng)更加能滿足學習需求[5]。
文章重點研究如何優(yōu)化實驗平臺的性能。因為隨著用戶數量的增加以及編程實驗任務量的增加,實驗平臺的性能下降。用戶等待時間逐漸變長,會嚴重影響學習的效果。
Python在線實驗平臺的性能優(yōu)化,對于當前的Python課程學習提供了較好的解決方案,適用于碎片化的學習方式[6]。另外我國的教育資源分布十分不均衡,發(fā)達地區(qū)的教育資源較多,通過這種在線Python在線實驗平臺將這些資源共享到供欠發(fā)達地區(qū)具有較好的社會意義。
1? Python基礎實驗模塊
一個完整的Python在線實驗系統(tǒng)包含有理論模塊、實驗模塊、交流模塊。其中最重要的是在線實驗模塊。本文研究的重點是如何提高在線實驗編程系統(tǒng)的性能。
1.1? 基礎實驗模塊的搭建
Python基礎實驗模塊使用jupyter notebook搭建。jupyter notebook是一種交互式筆記本,能夠支持多種編程語言,其中就包括Python。它通過webservice的方式提供用戶使用。所以可以實現遠程訪問。Python基礎實驗模塊的配置如下:
(1)在Linux下安裝 Anaconda,默認會安裝jupyter notebook和一些常用的python開發(fā)包。
(2)命令模式下運行jupyter notebook,打開瀏覽器的訪問界面,確認jupyter notebook安裝成功。
(3)安裝Python課程學習所需要的其他第三方包,例如wordcloud等。
(4)生成jupyter配置文件,命令:jupyter notebook --generate-config,然后就生成配置文件jupyter_notebook_config.py
(5)設置遠程訪問jupyter notebook的密碼。為了安全性,需要設置訪問密碼,然后將這個密碼的哈希算法sha1的值放到配置文件。計算sha1的方法有很多選擇,可以使用在線工具或者是使用notebook.auth包的passwd()函數。
(6)修改配置文件。打開配置文件jupyter_notebook_config.py。修改如下部分:
NotebookApp.ip=’服務器的遠程訪問IP地址’ #可以用*表示任意地址
NotebookApp.password = u’密碼的sha1值 ‘
本例中的具體設置為:
NotebookApp.ip=’218.92.23.106’
NotebookApp.password = u’ sha1:f8f7eaadda8c:3f83193252bdac9e9f60b6920f5f02ae7dd03ca9’
(7)用戶遠程訪問,在瀏覽器中打開網址http://218.92.23.106:8888。輸入密碼就可以正常使用jupyter notebook進行Python編程練習,如圖1所示。
1.2? 基礎實驗模塊的缺陷
隨著用戶數量的增加以及編程實驗任務量的增加,實驗平臺的性能下降。用戶等待時間逐漸變長,會嚴重影響學習的效果。所以需要優(yōu)化在線實驗系統(tǒng),合理使用服務器資源,提高運行的速度。
2? Python實驗系統(tǒng)性能優(yōu)化
優(yōu)化系統(tǒng)的工作過程如圖2所示。
具體的實現要點有:
(1)框架網頁必須和三個服務器使用相同的主域名,這樣可以解決跨域訪問的問題。例如框架網頁使用www.dm.com,服務器分別使用jn1.dm.com、jn2.dm.com、jn3.dm.com。
(2)創(chuàng)建框架網頁文件,使用<iframe>包含最優(yōu)服務器的juypter notebook默認首頁,例如http:// jn2.dm.com:8888。
(3)框架網頁和Iframe之間的信息傳遞使用postMessage方法。
發(fā)送信息:
Iframe.contentWindow.postMessage(‘message’, ‘ Iframe _URL’)
接受信息:
window.addEventListener(‘message’, function (event) {
……
}
(4)為了獲取每個服務器的狀態(tài),在每個服務器端放置一個10萬次累加的計算程序,該程序可以返回計算所用時間。通過框架網頁Ajax調用這個文件,就可以獲得所有服務器的當前狀態(tài)。
(5)為了避免頻繁更換服務器,如果當前服務器和最優(yōu)服務器之間性能差別在20%以內,則在當前服務器執(zhí)行任務;否則選擇運算時間最短的服務器為用戶的當前服務器,并執(zhí)行任務。
(6)為了能夠將父框架文件的鼠標事件專遞到iframe中的用戶文件,以及獲取用戶文件的運行狀態(tài),需要修改juypter notebook的模板文件,添加JS代碼。模板文件為notebook/templates/notebook.htm
例如“運行”菜單的單擊事件的傳遞:
$(‘#run_cell’).click();
單元格輸出結果的獲?。?/p>
$(“#notebook div[class ~=’selected’]
.output_wrapper.output .output_text pre”).text()
(7)新建工具欄代替juypter notebook原始的工具欄,如圖3所示。首先,隱藏juypter notebook中原來的菜單,通過修改notebook.html模板完成,將ID為”menubar-container”的DIV設置為display:none。然后在框架網頁中創(chuàng)建工具欄實現對juypter notebook的操作。當用戶單擊工具欄“運行”按鈕時,會首先選擇最優(yōu)服務器,然后運行文件。
系統(tǒng)執(zhí)行的流程圖如圖4所示。
3? 實驗與性能分析
實驗環(huán)境為6臺服務器,6臺客戶機。6臺服務器的配置是CPU :2核;內存:8G;帶寬:10M;操作系統(tǒng)Windows Server 2008 R2 64位企業(yè)版??蛻魴C使用CPU為Intel core i5-6200U 2.3 GHz、內存為8 GB、500 GB硬盤,操作系統(tǒng)是Windows10。瀏覽器使用chrome,版本為89.0.4389.82。
測試方法:在瀏覽器端使用JavaScript調用并執(zhí)行相關的Python程序,然后獲取執(zhí)行時間,如圖5所示。調用程序時按照設定的頻率循環(huán)執(zhí)行。
通過實驗驗證,優(yōu)化后的實驗平臺性能有了非常大幅的提高。
4? 結? 論
Python是目前較為熱門的計算機編程語言,社會上有較高的學習需求。學習好Python語言,編程實驗是非常重要的環(huán)節(jié)。為了讓學生隨時隨地可以開展編程實驗,搭建在線實驗平臺是一種較好的解決方案。通過框架頁面之間的通信與調用來優(yōu)化Python在線實驗平臺,具有較好的性能,能夠適用于多用戶、高頻率、高負載的環(huán)境。最后通過實驗證明了這一模型的優(yōu)越性。
參考文獻:
[1] 陶倩,趙振宇,舒海燕,等.PYTHON在氣象業(yè)務平臺的應用 [J].新農業(yè),2022(2):85-86.
[2] 丁文浩,朱齊亮.基于Python的招聘數據爬取與分析 [J].網絡安全技術與應用,2022(1):43-45.
[3] 韋依洋,吳一凡,李永遠.Python技術在數據可視化中的應用研究 [J].福建電腦,2022,38(1):27-31.
[4] 郝靜,平夢婷,陳建文,等.基于Python語言的科學計算課程教學改革研究 [J].計算機時代,2022(1):90-92+96.
[5]秦維超,戴曉芬.Python編程學習中巧用開源硬件提升問題解決能力 [J].中國信息技術教育,2022(1):62-63.
[6] 王佳莉.面向計算思維培養(yǎng)的智慧課堂教學模式構建——以初中Python教學為例 [J].中國現代教育裝備,2021(24):20-23.
作者簡介:何洪磊(1974—),男,漢族,江蘇連云港人,副教授,碩士,研究方向:軟件工程、人工智能。