关于多进程计算,内存飙升的问题

2016-03-21 12:59:23 +08:00
 moose123
import sys
import multiprocessing
import time

def func():
return 1+1

if __name__ == "__main__":
pool = multiprocessing.Pool(processes = 3)
for i in xrange(10000000):
pool.apply_async(func, ())
pool.close()
pool.join()


如果在 pypy test.py 执行,内存升的快些,用 python test.py 要慢些。
我跑 1000W 次,最终将导致内存错误,想问下,上面代码对于多进程是我使用有问题吗?
不用 multiprocess,Pool 就没这个问题。
多谢。
3014 次点击
所在节点    Python
2 条回复
mengzhuo
2016-03-21 14:37:17 +08:00
你都不会数数么?!
apply async 啊!
也就是要分配 10000000*4K 至少=38G 的栈空间
乖乖用同步持的方式吧
jamiesun
2016-03-21 17:31:26 +08:00
控制频率

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/265108

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX