python创建多个子进程,各进程间同步
import os import threading import time import multiprocessing def worker(pro_name,lock): print "%s acquiring lock............waiting" %pro_name lock.acquire() print "%s acquire lock............ok,pid=%d"%(pro_name,os.getpid()) print "handling......................[%s]"%pro_name time.sleep(5) lock.release() print "%s release lock............ok"%pro_name processes=[] lock=multiprocessing.Lock() for i in range(5): process_name="process%d"%i process=multiprocessing.Process(target=worker,args=(process_name,lock)) process.start() processes.append(process) for process in processes: process.join()
process1 acquiring lock............waiting process0 acquiring lock............waiting process0 acquire lock............ok,pid=6386 handling......................[process0] process3 acquiring lock............waiting process4 acquiring lock............waiting process2 acquiring lock............waiting process0 release lock............ok process1 acquire lock............ok,pid=6387 handling......................[process1] process1 release lock............ok process4 acquire lock............ok,pid=6390 handling......................[process4] process4 release lock............ok process3 acquire lock............ok,pid=6389 handling......................[process3] process3 release lock............ok process2 acquire lock............ok,pid=6388 handling......................[process2] process2 release lock............ok