这是我的代码:
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使用率会下降,这在使用多处理时似乎不是问题