小编xis*_*one的帖子

具有多处理功能的Python itertools - 巨大的列表与使用迭代器的低效CPU使用率

我处理n个元素(在下面命名为"pair")变体,重复用作我函数的参数.显然,只要"r"列表不足以消耗所有内存,一切都可以正常工作.问题是我必须最终为6个元素重复16次.我在云端使用40核心系统.

代码看起来如下所示:

if __name__ == '__main__':
  pool = Pool(39)
  r = itertools.product(pairs,repeat=16)
  pool.map(f, r)
Run Code Online (Sandbox Code Playgroud)

我相信我应该使用迭代器而不是预先创建巨大的列表,这里问题开始..

我尝试使用以下代码解决问题:

if __name__ == '__main__':
  pool = Pool(39)
  for r in itertools.product(pairs,repeat=14):
    pool.map(f, r)
Run Code Online (Sandbox Code Playgroud)

内存问题消失了,但每个内核的CPU使用率是5%.现在,代码的单核版本比这更快.

如果你能引导我一点,我真的很感激..

谢谢.

python multithreading python-itertools

7
推荐指数
1
解决办法
1213
查看次数

标签 统计

multithreading ×1

python ×1

python-itertools ×1