將資料設定成共享資料,乙個程序修改了資料,另外乙個程序就能就接受的被修改的資料。
起50個程序讓他們都去操作乙個資料:
from multiprocessing importprocess, 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 importprocess, 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...