一种高性能的在线Python实验平台的研究

2022-06-20 09:02何洪磊
现代信息科技 2022年1期
关键词:性能优化

摘  要:Python是比较热门的一种编程语言,搭建Python的在线实验平台可以让学生随时随地开展编程实验,满足当前的学习需求。实验系统的性能是系统可用性的一个瓶颈,文章使用jupyter notebook创建了基础实验模块,然后使用框架页面之间的通信与调用来优化实验平台,最后通过实验验证了平台的性能。证实该实验平台能够适用于多用户、高频率、高负载的环境。

关键词:Python;在线实验;性能优化;页面通信

中图分类号: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设计开发的,本身由其他语言发展而来,包括C、C++、ABC、Modula-3、Unix shell和一些脚本语言。因此它所写的脚本能够和其他大部分语言一起使用,例如C、C++、Java、JavaScript,所以说它是一种编程语言的胶水[2]。Python是一种解释性语言,没有编译环节,它提供了丰富的基础库,并且第三方库也非常多,所以非常适合初学者[3]。

因此,目前对于Python语言的学习有比较高的需求,例如高校的计算机语言课程、社会上的计算机职业技能培训大都选择Python。一些地方甚至还把Python语言作为信息技术中学考试科目[4]。

Python是实践性很强的课程,纯粹的理论课堂授课效果并不理想,需要安排充足的实验练习。由于传统的实验室机房练习受到时间地点的约束,而现在手机等智能通讯工具的普及,使用在线Python实验系统更加能满足学习需求[5]。

文章重点研究如何优化实验平台的性能。因为随着用户数量的增加以及编程实验任务量的增加,实验平台的性能下降。用户等待时间逐渐变长,会严重影响学习的效果。

Python在线实验平台的性能优化,对于当前的Python课程学习提供了较好的解决方案,适用于碎片化的学习方式[6]。另外我国的教育资源分布十分不均衡,发达地区的教育资源较多,通过这种在线Python在线实验平台将这些资源共享到供欠发达地区具有较好的社会意义。

1  Python基础实验模块

一个完整的Python在线实验系统包含有理论模块、实验模块、交流模块。其中最重要的是在线实验模块。本文研究的重点是如何提高在线实验编程系统的性能。

1.1  基础实验模块的搭建

Python基础实验模块使用jupyter notebook搭建。jupyter notebook是一种交互式笔记本,能够支持多种编程语言,其中就包括Python。它通过webservice的方式提供用户使用。所以可以实现远程访问。Python基礎实验模块的配置如下:

(1)在Linux下安装 Anaconda,默认会安装jupyter notebook和一些常用的python开发包。

(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  基础实验模块的缺陷

随着用户数量的增加以及编程实验任务量的增加,实验平台的性能下降。用户等待时间逐渐变长,会严重影响学习的效果。所以需要优化在线实验系统,合理使用服务器资源,提高运行的速度。

2  Python实验系统性能优化

优化系统的工作过程如图2所示。

具体的实现要点有:

(1)框架网页必须和三个服务器使用相同的主域名,这样可以解决跨域访问的问题。例如框架网页使用www.dm.com,服务器分别使用jn1.dm.com、jn2.dm.com、jn3.dm.com。

(2)创建框架网页文件,使用<iframe>包含最优服务器的juypter notebook默认首页,例如http:// jn2.dm.com:8888。

(3)框架网页和Iframe之间的信息传递使用postMessage方法。

发送信息:

Iframe.contentWindow.postMessage(‘message’, ‘ Iframe _URL’)

接受信息:

window.addEventListener(‘message’, function (event) {

……

}

(4)为了获取每个服务器的状态,在每个服务器端放置一个10万次累加的计算程序,该程序可以返回计算所用时间。通过框架网页Ajax调用这个文件,就可以获得所有服务器的当前状态。

(5)为了避免频繁更换服务器,如果当前服务器和最优服务器之间性能差别在20%以内,则在当前服务器执行任务;否则选择运算时间最短的服务器为用户的当前服务器,并执行任务。

(6)为了能够将父框架文件的鼠标事件专递到iframe中的用户文件,以及获取用户文件的运行状态,需要修改juypter notebook的模板文件,添加JS代码。模板文件为notebook/templates/notebook.htm

例如“运行”菜单的单击事件的传递:

$(‘#run_cell’).click();

单元格输出结果的获取:

$(“#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。然后在框架网页中创建工具栏实现对juypter notebook的操作。当用户单击工具栏“运行”按钮时,会首先选择最优服务器,然后运行文件。

系统执行的流程图如图4所示。

3  实验与性能分析

实验环境为6台服务器,6台客户机。6台服务器的配置是CPU :2核;内存:8G;带宽:10M;操作系统Windows Server 2008 R2 64位企业版。客户机使用CPU为Intel core i5-6200U 2.3 GHz、内存为8 GB、500 GB硬盘,操作系统是Windows10。浏览器使用chrome,版本为89.0.4389.82。

测试方法:在浏览器端使用JavaScript调用并执行相关的Python程序,然后获取执行时间,如图5所示。调用程序时按照设定的频率循环执行。

通过实验验证,优化后的实验平台性能有了非常大幅的提高。

4  结  论

Python是目前较为热门的计算机编程语言,社会上有较高的学习需求。学习好Python语言,编程实验是非常重要的环节。为了让学生随时随地可以开展编程实验,搭建在线实验平台是一种较好的解决方案。通过框架页面之间的通信与调用来优化Python在线实验平台,具有较好的性能,能够适用于多用户、高频率、高负载的环境。最后通过实验证明了这一模型的优越性。

参考文献:

[1] 陶倩,趙振宇,舒海燕,等.PYTHON在气象业务平台的应用 [J].新农业,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] 王佳莉.面向计算思维培养的智慧课堂教学模式构建——以初中Python教学为例 [J].中国现代教育装备,2021(24):20-23.

作者简介:何洪磊(1974—),男,汉族,江苏连云港人,副教授,硕士,研究方向:软件工程、人工智能。

猜你喜欢
性能优化
SQL Server数据库性能优化的几点分析
Web应用的前端性能优化
WEB网站缓存性能优化
Oracle数据库性能调整与优化分析