我有一个并行任务,它从多个文件中读取内容,并将其写入多个文件。我应该并行运行多少个进程?
我目前使用的并行化的东西的成语:
listOfProcesses = []
for fileToBeRead in listOfFilesToBeRead:
process = multiprocessing.Process(target = somethingThatReadsFromAFileAndWritesSomeStuffOut, args = (fileToBeRead))
process.start()
listOfProcesses.append(process)
for process in listOfProcesses:
process.join()
值得注意的是somethingThatReadsFromAFileAndWritesSomeStuffOut
本身可能并行任务(也可能有其他的文件,等等,等等看)。
现在,您可以看到,创建的进程数量不取决于我的计算机上的内核数量或其他任何内容,除了需要完成多少任务。如果需要运行10个任务,则创建10个进程等。
这是创建任务的最佳方法是什么?我应该考虑一下我的处理器有多少个内核?
这肯定不是多个进程越好。但是你应该考虑的另一件事是,创建额外的流程是否有意义。除非您对这些文件执行大量(CPU密集型)处理,否则这种情况很可能是I/O限制的。在这种情况下,Python线程将做的很好。 –