《用Python做科学计算》在线演示

继实例源程序之后,继续学习web2py的用法,终于大致完成了这个在线演示功能。

在线演示:http://hyry.dip.jp:8000/scipybook/calc/index

这个网站的目的是让用户能通过网页在服务器上运行书中的一些实例程序,并查看计算结果。由于直接使用Python的exec语句执行代码,因此存在安全问题,不能开放在线编写演示程序的功能。

有些演示需要用户输入函数,例如数值积分、函数拟合等等。这些函数也使用exec运行,但是使用了RestrictedPython,并且完全禁止了__builtin__模块,只预先载入了NumPy库中的一些数学函数,因此它的安全性应该是有保障了。

另外如果用户输入的函数或者参数问题,导致计算时间过长时,将会抛出超时异常。这里使用单独的线程运行演示程序,当超过指定的运行时间时,在主线程中让计算线程抛出异常。这段程序参考了下面的地址:

http://sebulba.wikispaces.com/recipe+thread2