python允许最大进程数_Python多处理:池工作进程的最大数量?

这不是一个完整的答案,但来源可以帮助指导我们。当您将maxtasksperchild传递给Pool时,它将此值另存为self._maxtasksperchild,并且仅在创建worker对象时使用它:def _repopulate_pool(self):

"""Bring the number of pool processes up to the specified number,

for use after reaping workers which have exited.

"""

for i in range(self._processes - len(self._pool)):

w = self.Process(target=worker,

args=(self._inqueue, self._outqueue,

self._initializer,

self._initargs, self._maxtasksperchild)

)

...

此辅助对象使用maxtasksperchild,如下所示:

^{pr2}$

不会改变物理极限,而且while maxtasks is None or (maxtasks and completed < maxtasks):

try:

task = get()

except (EOFError, IOError):

debug('worker got EOFError or IOError exiting')

break

...

put((job, i, result))

completed += 1

基本上保存每个任务的结果。虽然保存过多的结果可能会导致内存问题,但如果列表太大,也会导致同样的错误。简言之,源代码并不建议对可能的任务数量进行限制,只要结果在发布后可以放入内存中。在

这能回答问题吗?不完全是。然而,在Ubuntu12.04和Python2.7.5中,这段代码,虽然不可取,对于任何大的max_task值似乎都能正常运行。请注意,对于较大的值,输出的运行时间似乎呈指数级增长:import multiprocessing, time

max_tasks = 10**3

def f(x):

print x**2

time.sleep(5)

return x**2

P = multiprocessing.Pool(max_tasks)

for x in xrange(max_tasks):

P.apply_async(f,args=(x,))

P.close()

P.join()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值