如果我在Python解释器中创建一个具有令人无法接受的大量进程的池,它显然会出现错误,但是在执行此操作之前看起来似乎没有清除分叉进程,因此会使环境变脏,并且系统的其余部分无法分叉进程.
>>> from multiprocessing import Pool
>>> p = Pool(1000)
Traceback (most recent call last):
File "
有没有办法避免/补救这个,还是被认为是一个错误?
最佳答案
Is there some way to avoid/remedy this,
不要那样做.
or is it considered a bug?
是的,因为如果初始化程序失败,所有分配的资源都应该被解除分配.您应该检查您正在使用的2.7的特定版本,并查看在以后的版本中是否修复了任何多处理特定的库错误(2.7.6发行说明:http://hg.python.org/cpython/raw-file/99d03261c1ba/Misc/NEWS).
我假设您的平台是基于堆栈跟踪中的路径的OSX.这是一个关于errno 35的帖子(在OSX中似乎是EAGAIN),在分叉时 – I can’t run more than 100 processes
无论您想要完成什么,似乎您需要在应用程序级别上限制资源使用.这意味着您可能需要重新考虑您的解决方案.使用您当前的解决方案并修复错误,您仍然可能会在其他环境中看到系统范围内的资源限制.