У меня есть распараллеленная задача, которая читает материал из нескольких файлов и записывает информацию в несколько файлов.
Идиома, которую я сейчас использую для распараллеливания вещей:
listOfProcesses = []
for fileToBeRead in listOfFilesToBeRead:
process = multiprocessing.Process(target = somethingThatReadsFromAFileAndWritesSomeStuffOut, args = (fileToBeRead))
process.start()
listOfProcesses.append(process)
for process in listOfProcesses:
process.join()
Стоит отметить, что somethingThatReadsFromAFileAndWritesSomeStuffOut
может сам распараллеливать задачи (возможно, придется читать из других файлов и т. Д. И т. Д.).
Теперь, как вы можете видеть, количество создаваемых процессов не зависит от количества ядер на моем компьютере или чего-либо еще, , за исключением того, сколько задач нужно выполнить . , Если нужно выполнить десять задач, создайте десять процессов и т. Д.
Это лучший способ создавать задачи? Стоит ли мне думать о том, сколько ядер у моего процессора и т. Д .