multiprocessing.Pool内存分配错误

时间:2017-04-01 17:59:08

标签: python python-2.7

我正在运行在共享主机上使用多处理池的脚本。我收到了以下错误:

Errno 12] Cannot allocate memory
(<type 'exceptions.OSError'>, 

以下是我的代码:

with closing(Pool(processes=50)) as pool:
 csv_items = pool.map(get_stuff, list_ids)
 pool.terminate()
 pool.join()

1 个答案:

答案 0 :(得分:1)

好的,您正在尝试启动池中使用的另外50个进程。现在,这与线程不同,这将启动50个包含所有python模块和库的新Python进程。

默认情况下,Pool将启动cpu_count()个新进程,通常考虑使用多CPU多核计算机。现在,默认情况下,每个新的工作进程都将在池的工作队列的整个持续时间内生效。如果我将使用专用的VPS实例,我将采取预防措施,在我的池中自由创建工作进程。在您使用共享主机的情况下,内存限制将更大,显示您在上面看到的错误消息。

如果您想使用此功能,请将部署从共享主机更改为专用的vps /云实例。