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 就没这个问题。
多谢。
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 就没这个问题。
多谢。
2 条回复 • 2016-03-21 17:31:26 +08:00
|
1
mengzhuo 2016 年 3 月 21 日 via iPhone
你都不会数数么?!
apply async 啊! 也就是要分配 10000000*4K 至少=38G 的栈空间 乖乖用同步持的方式吧 |
|
2
jamiesun 2016 年 3 月 21 日
控制频率
|
推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide