双重或更多多处理?

Double or More Multiprocessing?

我正在处理年>月>日文件夹层次结构中的一些文件(其中天是我正在操作的实际文件)。

现在我在日级并行化,所以一次处理八个文件,但我想知道是否有可能在数月甚至数年内进行一些外部并行化?我可以做类似的事情吗:

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

然后在 convertYears 函数中,

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

然后在 convertMonths 函数中,

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

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

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

长话短说,程序会一样快,如果您坚持在一个级别上并行化,您的 CPU 不会讨厌您。