【发布时间】:2017-06-04 23:31:25
【问题描述】:
当我执行循环遍历大小为 10^8 的数组的 python 代码时。电脑变得无响应,大约需要 10 分钟才能执行代码。 完成脚本后,它会延迟一段时间。
那么这是由于处理器薄弱造成的问题还是 Ram 问题,修复它的唯一方法是升级 ram?
脚本可以很简单:
arr = [x for x in range(pow(10,8))]
for i in range( len(arr) ):
arr[i]+=1
我的规格是: 内存为 8 GB。 操作系统是 Ubuntu。 蟒蛇 3.6。 处理器:英特尔酷睿 i7-3632QM 2.20GHZ
关于究竟发生了什么的更多细节:当我运行脚本时,我可以看到 python 进程的内存使用量不断增加。然后PC变得无响应。它不会响应我给出的任何操作。如果在后台播放任何内容,它会停止,如果我移动鼠标,光标将不会移动。直到脚本真正完成。然后它变得反应灵敏,但有一段时间非常滞后。如果我尝试将活动应用程序切换到另一个最小化的应用程序,则需要一些时间。就像PC刚刚启动一样。一切恢复正常需要一点时间。
【问题讨论】:
-
与其他语言相比,Python 的链接速度很慢。尝试一些 golang、rust、c 或 c++。
-
你可以用
10 ** 8代替math.pow顺便说一句 -
@cat 这不是这里的慢操作。
-
@Soviut 很清楚,但这不是 JS
-
list(range(10**8))那么循环不会更快吗?或者对于给定的示例list(range(1,10**8+1))具有相同的最终结果
标签: python arrays performance cpu