Python Forum

Full Version: How to restart the processes in the pool after the pool got completed
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,


I had a python script which runs the processes in parallel in a pool of 3.
Is there any way to restart these process automatically after the pool of processes got completed?
Please help

from multiprocessing import Pool
import glob
import os
import csv
from threading import Thread
from multiprocessing import Pool as ThreadPool
import time
items = ['ACM','ACX','AW','BC','XU0', 'DRM', 'DHD', 'CR', 'GSK', 'DMS', 'BLS']
work = (["A", 5], ["B", 5], ["C", 5], ["D", 5],["E", 5], ["F", 5], ["G", 5], ["H", 5])


def work_log(work_data):
	print(" Process %s waiting %s seconds" % (work_data[0], work_data[1]))
	time.sleep(int(work_data[1]))
	print(" Process %s Finished." % work_data[0])
	items = ['ACM','ACX','AW','BC','XU0', 'DRM', 'DHD', 'CR', 'GSK', 'DMS', 'BLS']
	
	for item in items:
		try:
			print item
		except:
			print('error with pattern')


def pool_handler():
	p = Pool(3)
	p.map(work_log, work)
	
	


if __name__ == '__main__':
	pool_handler()
Output:
[root@edgenode]# python d4.py Process A waiting 5 seconds Process B waiting 5 seconds Process C waiting 5 seconds Process A Finished. ACM ACX AW BC XU0 DRM DHD CR GSK DMS BLS Process D waiting 5 seconds Process B Finished. Process C Finished. ACM ACM ACX ACX AW AW BC BC XU0 XU0 DRM DRM DHD DHD CR CR GSK GSK DMS DMS BLS BLS Process E waiting 5 seconds Process F waiting 5 seconds Process D Finished. ACM ACX AW BC XU0 DRM DHD CR GSK DMS BLS Process G waiting 5 seconds Process E Finished. ACM ACX AW BC XU0 DRM DHD CR GSK DMS BLS Process H waiting 5 seconds Process F Finished. ACM ACX AW BC XU0 DRM DHD CR GSK DMS BLS Process G Finished. ACM ACX AW BC XU0 DRM DHD CR GSK DMS BLS Process H Finished. ACM ACX AW BC XU0 DRM DHD CR GSK DMS BLS