Itertools.combinations()在Generator上 - Python

时间:2018-02-21 04:39:49

标签: multithreading python-3.x generator combinations

假设我有一个生成器,每次调用都会产生一些随机数。我希望这些数字的组合在2中。

def generate():
    while True: # Note this is not actually infinite, just an example
        yield random(1,10)

for combos in iter.combinations(generate(),2):
    #DO AN OPERATION WITH A COMBINATION
    #HOW DO I MULTI-THREAD THIS?

但我的发电机将产生总数'n',这是24000+数字。因此,我需要在组合时处理组合,而不是存储在列表(内存)中。

我还需要通过在至少4个线程之间划分组合来多线程操作此操作。

我想过做这个循环,即分配4个队列,每个线程负责1个队列。

你们有其他建议吗?我需要脚本尽快完成执行。

编辑:

好的,我刚写了这个程序的两个版本(基于列表,基于生成器)。

而我的基于列表的版本实际上占用的内存较少。这怎么可能?

编辑2:

这是因为我试图逐点使用pyplot绘制点。这导致每次调用时都重新呈现图形。

0 个答案:

没有答案