Python性能优化与增强提案解析
1. PyPy与多进程性能对比
在性能测试中,为避免耗时过长,仅进行了100万次函数调用。首先执行多进程调用,耗时近45秒。随后修改代码,去除多进程调用,分别使用普通Python和PyPy运行,耗时分别约为1.5秒和0.5秒。
多进程在某些情况下有用,但要充分利用它,需对程序进行大量优化。因为每个进程都需重新启动,存在类似函数调用的开销,所以多进程可能比单线程操作更慢。而且每个进程会占用一个CPU核心,在代码处理并行化的同时,该核心会被锁定直至处理完成。
对于少于100万次的调用,多进程表现良好。10万次调用时,总时间略低于4秒;1万次调用时,时间少于0.5秒,与PyPy相当。然而,当尝试以原始的10亿次调用运行代码时,作者配备八核的计算机出现严重卡顿,尝试终止进程后,计算机在1.5小时后才解除锁定。
多进程代码出现此问题的主要原因是未进行充分优化,只是在资源可用时简单调用函数。每个进程会占用CPU周期和内存空间,最终新进程需等待资源可用。而串行处理(如Python或PyPy)不存在此开销问题,即使多次调用也能快速处理。不过,这只是一个相对人为的测试,实际项目中哪种方法最佳会有很大差异。
总体而言,这充分展示了PyPy的性能优势以及它与多进程的对比情况。虽然结合PyPy和多进程可能可行,但从相关资料来看,PyPy社区似乎对提升并行处理性能兴趣不大,因此实际效果会有所不同。
不同调用次数下的性能对比
| 调用次数 | 多进程耗时 | 普通Python耗时 |
|---|
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



