对于 Python 的科学计算有哪些提高运算速度的技巧?

论坛 期权论坛 期权     
一切同理   2018-9-27 22:16   5090   7
最近在用 Python 做科学计算,但是被 Python 的运行速度所困扰。矩阵运算也很慢,想征求下大家的建议。有什么优化 Python 科学计算的方法么?或者对于科学计算的语言有什么推荐么?非常感谢!
分享到 :
0 人收藏

7 个回复

倒序浏览
2#
Sager  1级新秀 | 2018-9-27 22:16:29 发帖IP地址来自
避免使用for循环。
备注:能用Series,Dataframe,矩阵运算的千万不要使用for循环。也可以结合Python的列表解析和生成器表达式取代for循环。
3#
回归猴子  3级会员 | 2018-9-27 22:16:31 发帖IP地址来自
python因为所有东西都是对象。。所以box/unbox会耗时间。。然后gil所以同时只能解释单线程。。

所以想加速。。
1。numpy的array可以理解为整个array是单一box。。所以尽量整体操作会节约时间。
2。把计算intensive的部分 放到其他语言里写:首先是python/c的api。。不过这样写程序就没有写python那么快了。 所以cython也是一个不错的选择。。
3。另外针对gil 也是一样的道理 可以考虑 把计算分给不同的py程序去完成(分数据集,分任务这样),这样就可以并行了;另外呢,2的方法也能解决这个问题。
4。有个东西叫numba。。numba.jit算是性价比最高的无脑优化了(不过好像影响精度)。。
4#
帅得都溢出了  4级常客 | 2018-9-27 22:16:33 发帖IP地址来自
可以用cython,numba,pypy提高Python的运行速度。用GPU做并行的话可以用gnumpy或者tensor flow。Python自身的并行很淡腾,全局解释锁使得Python的多线程同时只能利用一个核。想用多核就要用多进程,Python的多进程通信要把对象进行序列化,效率比较低。想大幅度提高运行速度,关键部分的代码还是用Fortran或者C/C++写比较好。
5#
liv   | 2018-9-27 22:16:34 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
6#
南方的太阳鱼  1级新秀 | 2018-9-27 22:16:36 发帖IP地址来自
原来这里 是知乎
7#
刘天亮  1级新秀 | 2018-9-27 22:16:37 发帖IP地址来自
用multiprocessing。如果没记错的话模块应该叫这个名字,跑程序的时候可以把需要大量计算的东西拆成几小份。然后分发给每个进程。这样也算是能变相使用多进程吧。不过这个东西不太好用,应用范围也挺窄的。别人说的很多看样子都挺好的。走投无路的时候可以试试这种多进程方法。
8#
柠檬浣熊  2级吧友 | 2018-9-27 22:16:38 发帖IP地址来自
转Julia,转nim
cython
rust写扩展。
为什么不用c或c艹?
你如果能理解gc工作原理,熟悉内存操作爱用用呗.
只不过一般情况下弱智的Python GC都不怎么管用
恩,Julia最简洁
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP