Python多处理池在2000年中仅运行400个作业并停止运行

时间:2019-04-04 10:47:00

标签: python python-multiprocessing pool

我想对2000个单独的数据运行代码模块。为此,我使用了以下python代码

num_workers = multiprocessing.cpu_count() 
pool = multiprocessing.Pool(processes=num_workers)
print 
results = [pool.apply_async(run_Nested_Cage, args=(bodyid,)) for bodyid in body_IDs]
output = [p.get() for p in results]

对于body_IDs中的50个数据,它运行正常,但是当我给2000个body时,它开始运行良好,但是在生成424个body的结果后,程序将立即停止运行而没有任何错误。

我正在具有8核心32 GB内存和100GB存储的AWS EC2 linux ubuntu服务器中运行它。

有人可以帮助我确定解决方案吗?

1 个答案:

答案 0 :(得分:0)

听起来像是内存问题,未捕获的异常或代码复杂性问题。

  1. 添加一些“调试”日志,以后可以禁用
  2. 尝试在一个池中旋转而不是一个巨大的池
  3. 有时终止池实例以释放内存
  4. 运行一些分析器

分析器: