python 程序池Pool以及Queue的用法

2022-08-22 14:36:08 字數 1356 閱讀 8703

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):

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 函式名,引數列表的列表 所謂的引數列表的列表是把所有的任務的...