我正在运行在共享主机上使用多处理池的脚本。我收到了以下错误:
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()
答案 0 :(得分:1)
好的,您正在尝试启动池中使用的另外50个进程。现在,这与线程不同,这将启动50个包含所有python模块和库的新Python进程。
默认情况下,Pool
将启动cpu_count()
个新进程,通常考虑使用多CPU多核计算机。现在,默认情况下,每个新的工作进程都将在池的工作队列的整个持续时间内生效。如果我将使用专用的VPS实例,我将采取预防措施,在我的池中自由创建工作进程。在您使用共享主机的情况下,内存限制将更大,显示您在上面看到的错误消息。
如果您想使用此功能,请将部署从共享主机更改为专用的vps /云实例。