双重或多重处理?

时间:2017-10-27 21:48:15

标签: python multiprocessing python-multiprocessing

我正在处理文件夹层次结构中的一些文件,这些文件位于Years> Months> Days(其中days是我正在操作的实际文件的日期)。

现在我在日级别并行化,所以一次做八个文件,但我想知道是否有可能在几个月甚至几年内做一些外部并行化?我可以这样做:

pool = Pool()
pool.starmap(convertYears, years)

然后在convertYears函数中,

pool = Pool()
pool.starmap(convertMonths, months)

然后在convertMonths函数中,

pool = Pool()
pool.starmap(convertDays, files)

我不太了解并行化的工作原理,所以这就是我在这里问的原因。

1 个答案:

答案 0 :(得分:1)

是的,这是可能的,但默认情况下Pool使用最大可用处理器数,这意味着可以一次完成的最大任务数。这意味着,如果您有8个可用处理器convertYears将同时打开8个,那么当它们启动convertMonths时,每个处理器将打开8(现在总共为64个),并且每个处理器将打开8 (现在总共有512个进程)并且所有这些都将带来创建新进程所需的时间和内存开销,而所有这些都将只运行8个进程。即使您使用Pool(2)来限制每个级别,您仍然会同时拥有8个进程,这正是您开始的地方。

长话短说,程序将同样快,如果你只是坚持在一个级别进行并行化,你的CPU就不会讨厌你。