import os,time,randomfrom 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):
print('等待所有新增的程序執行完畢。。。')
p.close()#在join之前要先關閉程序池,避免新增新的程序
程序間的通訊
from multiprocessing import process,queue資料輸出效果:import os,time,random
#寫資料的程序
def write(q):
print('寫程序pid:%s'% os.getpid())
for value in ['i','love','python']:
q.put(value)
time.sleep(random.random())
#讀資料的程序:
def read(q):
print('讀程序pid:%s'% (os.getpid()))
while true:
value=q.get(true)
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程序是死迴圈,無法等待其結束,只能強行終止
Python多程序 程序池pool
from multiprocessing import process,pool import time defselect time.sleep 1 print time.ctime return 這是每個進行執行完後返回的值,該值會會被 callback函式接收 def foo args pri...
python 程序池Pool詳情
當需要建立的子程序數量不多時,可以直接利用multiprocessing中的process動態成生多個程序,但如果是上百甚至上千個目標,手動的去建立程序的工作量巨大,此時就可以用到multiprocessing模組提供的pool方法。初始化pool時,可以指定乙個最大程序數,當有新的請求提交到poo...
Python多程序4 程序池 Pool
學習 分類目錄 多程序 是multiprocessing模組下的乙個類,是一種建立多程序的更加簡便的方式,可以更加方便的分配任務與傳遞引數。pool mp.pool processes 6 生成程序池 pool的兩個任務分配的函式 map 函式名,引數列表的列表 所謂的引數列表的列表是把所有的任務的...