import logging
import multiprocessing
import time
logging.basicConfig(level=logging.DEBUG, format='%(processName)s: %(message)s')
def worker1(i):
logging.debug('start')
time.sleep(5)
logging.debug('end')
return i * 2
if __name__ == '__main__':
with multiprocessing.Pool(3) as p:
r = p.map(worker1, [100, 200])
logging.debug('excuted map')
logging.debug(r)
r = p.map_async(worker1, [100, 200])
logging.debug('excuted map_async')
logging.debug(r.get())
r = p.imap(worker1, [100, 200])
logging.debug('excuted imap')
logging.debug([i for i in r])
#p1 = p.apply_async(worker1, (100,)) #Since it is asynchronous, proceed to the next without waiting for the value to be returned
#p2 = p.apply_async(worker1, (100,))
#logging.debug('excuted')
#logging.debug(p1.get())
#logging.debug(p2.get())
ForkPoolWorker-1: start
ForkPoolWorker-2: start
ForkPoolWorker-1: end
ForkPoolWorker-2: end
MainProcess: excuted map
MainProcess: [200, 400]
MainProcess: excuted map_async
ForkPoolWorker-1: start
ForkPoolWorker-3: start
ForkPoolWorker-1: end
ForkPoolWorker-3: end
MainProcess: [200, 400]
MainProcess: excuted imap
ForkPoolWorker-2: start
ForkPoolWorker-1: start
ForkPoolWorker-2: end
ForkPoolWorker-1: end
MainProcess: [200, 400]
Recommended Posts