multiprocessing是一個使用類似于線程模塊的API來支持產(chǎn)卵過程的軟件包鲤妥。 多處理包提供本地和遠(yuǎn)程并發(fā)虹茶,通過使用子進(jìn)程而不是線程有效地側(cè)移全局解釋器鎖。 由于這個原因,多處理模塊允許程序員充分利用給定機(jī)器上的多個處理器升敲。 它可以在Unix和Windows上運(yùn)行。
from multiprocessing import Process
import time
import os
def info(title):
print(title)
print('module name:',__name__)
print('parent process:',os.getppid())
print('process id:',os.getpid())
if __name__ == '__main__':
for i in range(1):
p = Process(target=info,args=(i,))
p.start()
time.sleep(1000)
進(jìn)程間通訊
from multiprocessing import Queue,Process
def que(data):
data.put(['hello',None,True])
if __name__ == '__main__':
q = Queue()
p = Process(target=que,args=(q,))
p.start()
print(q.get())
from multiprocessing import Process, Pipe
def f(conn):
conn.send(['我是子進(jìn)程轰传,正在向你發(fā)短信'])
conn.close()
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=f,args=(child_conn,))
p.start()
print(parent_conn.recv())
p.join()
進(jìn)程間數(shù)據(jù)共享
Manager()返回的管理器對象控制一個服務(wù)器進(jìn)程驴党,該進(jìn)程持有Python對象,并允許其他進(jìn)程使用代理來操縱它們获茬。
Manager()返回的管理器將支持類型列表港庄,字典,命名空間恕曲,Lock鹏氧,RLock,信號量佩谣,BoundedSemaphore把还,Condition,Event茸俭,Barrier吊履,Queue,Value和Array调鬓。
from multiprocessing import Process, Manager
import os
def f(d,l):
d[os.getpid()] = os.getpid()
l.append(os.getpid())
print(l)
if __name__ == '__main__':
with Manager() as manager:
d = manager.dict()
l = manager.list()
p_list = []
for i in range(10):
p = Process(target=f, args=(d, l))
p.start()
p_list.append(p)
for res in p_list:
res.join()
print(d)
print(l)