python多程序之資料共享Manager

2021-10-19 17:19:33 字數 1158 閱讀 1476

多程序中,各個程序開闢空間,資料是不共享的,如果想讓其資料在各個程序中實現共享,需要借助manager

from multiprocessing import process

from multiprocessing import manager

from multiprocessing import lock

defchange_dic

(dic,lock)

:# lock.acquire() # 互斥鎖上鎖

dic[

"count"]-=

1# print(dic)

# lock.release() # 互斥鎖解鎖

if __name__ ==

"__main__"

: m = manager(

) dic = m.

dict()

lock = lock(

) p_1 =

for i in

range

(100):

# p = process(target=change_dic,args=(dic,))

p = process(target=change_dic,args=

(dic,lock)

) p.start(

)for p in p_1:

p.join(

)print

(dic)

這裡順帶一提:多執行緒中資料是共享的(同一程序內的資源資料對於該程序中的多個執行緒來說是共享的),舉個例子(這裡用字典舉例,如果傳入的是變數不能直接套用):

from threading import thread

deftask

(dic)

: dic[

"count"]-=

1print

(dic[

"count"])

if __name__ ==

"__main__"

: dic =

for i in

range(50

):t = thread(target=task,args=

(dic,))

t.start(

)

Python 多程序 共享資料

coding utf 8 from multiprocessing import process,manager import time import random defkkk a list,number for i in range 10 time.sleep random.randrange ...

python多程序共享資料

python的multiprocessing模組提供兩種共享記憶體,sharedctypes與manager,manager效率較低,但支援遠端共享記憶體。sharedctypes效率較高,快manager兩個數量級,在多程序訪問時與普通記憶體訪問相當 共享方式 支援的型別 shared memor...

多程序資料共享

不用程序池的多程序的資料共享from multiprocessing import process,queue queue queue def func a,q re f 我是子程序 我放入data q.put re if name main ls for i in range 10 p proce...