資料共享Manager

2022-01-12 23:01:08 字數 1058 閱讀 6008

將資料設定成共享資料,乙個程序修改了資料,另外乙個程序就能就接受的被修改的資料。

起50個程序讓他們都去操作乙個資料:

from multiprocessing import

process, manager

deffunc(m):

m['dic

'] -= 1

if__name__ == "

__main__":

m =manager()

dic = m.dict()

p_list =

for i in range(50):

p = process(target=func, args=(dic,))

p.start()

for i in

p_list:

i.join()

print(dic['dic'])

多執行幾次發現,結果有時是50,有時是53,有時是57等等。。。

為什麼會出現這個結果,因為乙個88被乙個程序拿到要去修改還沒修改時被其他程序拿到,然後這個程序將資料修改成87並寫入字典,另外乙個程序也就改成87並寫入字典,這就導致資料不安全,解決辦法加鎖就可以了。

from multiprocessing import

process, manager, lock

deffunc(m, lock):

lock.acquire()

m['dic

'] -= 1lock.release()

if__name__ == "

__main__":

lock =lock()

m =manager()

dic = m.dict()

p_list =

for i in range(50):

p = process(target=func, args=(dic, lock))

p.start()

for i in

p_list:

i.join()

print(dic['

dic'])

python中Manager程序資料共享

from multiprocessing import process,manager 從多程序匯入過程中,管理者 import os def f d,l,e d os.getpid os.getpid getpid得到各程序的id print l l print d d print e e if ...

多程序manager共享

使用manager在程序之間事項共享資料.栗子 主程序呼叫manager,建立乙個字典d和乙個列表l,啟動十個子程序,每個子程序都向d和l中放資料 輸出結果 d 7 python python37 python.exe d 7 python s14 其他 aaaa.py 0,1,2,3,4,1012...

乾貨收藏 爬蟲使用Manager共享資料

通過manager類也可以實現程序間資料的共享。manager 返回的manager物件提供乙個服務程序,使得其他程序可以通過 的方式操作python物件。manager物件支援 list,dict,namespace,lock,rlock,semaphore,boundedsemaphore,co...