Следующий код запускает три процесса, они находятся в пуле для обработки 20 рабочих вызовов:
import multiprocessing
def worker(nr):
print(nr)
numbers = [i for i in range(20)]
if __name__ == '__main__':
multiprocessing.freeze_support()
pool = multiprocessing.Pool(processes=3)
results = pool.map(worker, numbers)
pool.close()
pool.join()
Есть ли способ запустить процессы в последовательности (в отличие от запуска всех процессов одновременно) с задержкой, вставленной между каждым запуском процесса?
Если бы я не использовал Pool
, я бы использовал multiprocessing.Process(target=worker, args=(nr,)).start()
в цикле, запуская их один за другим и вставляя задержку по мере необходимости. Однако я нахожу Pool
чрезвычайно полезным (вместе с вызовом map
), поэтому я был бы рад сохранить его, если это возможно.
Pool
в последовательности (с 5-секундной задержкой) решит проблему. - person WoJ   schedule 16.09.2015