importos# 子进程要执行的代码defrun_proc(name):print'Run child process %s (%s)...'%(name,os.getpid())if__name__=='__main__':print'Parent process %s.'%os.getpid()p=Process(target=run_proc,args=('test',))print'Process will start.'p.start()p.join()print'Process end.'</pre>
三、在multiprocessing中使用pool
如果需要多个子进程时可以考虑使用进程池(pool)来管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
frommultiprocessingimportPoolimportos,timedeflong_time_task(name):print'Run task %s (%s)...'%(name,os.getpid())start=time.time()time.sleep(3)end=time.time()print'Task %s runs %0.2f seconds.'%(name,(end-start))if__name__=='__main__':print'Parent process %s.'%os.getpid()p=Pool()foriinrange(5):p.apply_async(long_time_task,args=(i,))print'Waiting for all subprocesses done...'p.close()p.join()print'All subprocesses done.'</pre>
frommultiprocessingimportProcess,Queue,Poolimportmultiprocessingimportos,time,random# 写数据进程执行的代码:defwrite(q,lock):lock.acquire()#加上锁forvaluein['A','B','C']:print'Put %s to queue...'%valueq.put(value)lock.release()#释放锁# 读数据进程执行的代码:defread(q):whileTrue:ifnotq.empty():value=q.get(False)print'Get %s from queue.'%valuetime.sleep(random.random())else:breakif__name__=='__main__':manager=multiprocessing.Manager()# 父进程创建Queue,并传给各个子进程:q=manager.Queue()lock=manager.Lock()#初始化一把锁p=Pool()pw=p.apply_async(write,args=(q,lock))pr=p.apply_async(read,args=(q,))p.close()p.join()printprint'所有数据都写入并且读完'