为什么concurrent.future执行程序没有使用我的所有内核?

时间:2016-09-26 20:06:39

标签: python parallel-processing

这是我的代码:

from concurrent.futures import ProcessPoolExecutor

def Fun(i):
    do something

with ProcessPoolExecutor(max_workers = 8) as e:
    e.map(Fun, range(10000000), chunksize = int(10000000/256))

我有8个核心,但是,这只使用了4个核心。

当我使用多处理模块时,可以使用我的所有8个核心。例如:

with Pool(8) as p:
    p.map_async(Fun, range(10000000))
    p.close()
    p.join()

我不明白为什么。另外,如果e.map()中的块大小太大或太小,我的CPU使用率会下降,这在使用多处理时似乎不是问题

0 个答案:

没有答案