我有一个请求服务器、检索一些数据、处理它并保存一个 csv 文件的函数。此功能应启动 20k 次。每次执行的持续时间都不同:有时会持续超过 20 分钟,有时会持续不到一秒。我决定继续multiprocessing.Pool.map
并行执行。我的代码如下所示:
def get_data_and_process_it(filename):
print('getting', filename)
...
print(filename, 'has been process')
with Pool(8) as p:
p.map(get_data_and_process_it, long_list_of_filenames)
看看是如何prints
生成的,它似乎long_list_of_filenames
被分成 8 个部分并分配给每个部分,CPU
因为有时只是在 20 分钟的执行中被阻塞,而在这 20 分钟内没有long_list_of_filenames
处理任何其他元素。我所期望的是以map
FIFO 样式安排 cpu 核心中的每个元素。
我的情况有更好的方法吗?