import os,time,random
from multiprocessing import Pool
def task(name):
print('正在運行的任務:%s,PID:(%s)'%(name,os.getpid()))
start=time.time()
time.sleep(random.random()*10)
end=time.time()
print('任務:%s,用時:%0.2f 秒'%(name,(end-start)))
if __name__=='__main__':
print('父進程ID:%s'%(os.getpid()))
p=Pool(4)
for i in range(5):
p.apply_async(task,args=(i,))
print('等待所有添加的進程運行完畢。。。')
p.close()#在join之前要先關閉進程池,避免添加新的進程
p.join()
print('End!!,PID:%s'% os.getpid())

進程間的通信
from multiprocessing import Process,Queue
import os,time,random
#寫數據的進程
def write(q):
print('寫進程PID:%s'% os.getpid())
for value in ['I','Love','Python']:
print('放入隊列:%s,時間:%s'% (value,time.time()))
q.put(value)
time.sleep(random.random())
#讀數據的進程:
def read(q):
print('讀進程PID:%s'% (os.getpid()))
while True:
value=q.get(True)
print('獲得數據:%s,時間:%s'% (value,time.time()))
if __name__=='__main__':
#父進程創建Queue,並傳給各個子進程
q=Queue()
pw=Process(target=write,args=(q,))
pr=Process(target=read,args=(q,))
pw.start()
pr.start()
pw.join()
pr.terminate()#pr進程是死循環,無法等待其結束,只能強行終止
數據輸出效果:

