我無法在多處理中更新 python 中的全域字典,輸出為 {}。我可以在代碼中做錯什么?我打算列印出更新的 dict 水果。
import multiprocessing as mp
import time
fruits ={}
def work():
global fruits
fruits["Apple"]="{'color':'Red','origin':'Germany'}"
if __name__ == "__main__":
p = mp.Process(target=work)
p.start()
time.sleep(2)
print(fruits)
uj5u.com熱心網友回復:
運行時work,它在自己的地址空間中執行fruits,它看到的全域變數fruits與主行程看到的全域變數不同。最簡單的解決方案是傳遞給可跨行程共享work的托管字典。請參閱檔案。
您也不應該依賴在主行程中使用計時器來確保字典已更新。join相反,在multiprocessing.Process實體上呼叫方法。這將導致主行程阻塞,直到子行程完成:
import multiprocessing as mp
def work(fruits):
fruits["Apple"]="{'color': 'Red', 'origin':'Germany'}"
if __name__ == "__main__":
with mp.Manager() as manager:
fruits = manager.dict()
p = mp.Process(target=work, args=(fruits,))
p.start()
p.join()
print(fruits)
印刷:
{'Apple': "{'color': 'Red', 'origin':'Germany'}"}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/445168.html
標籤:Python python-3.x 字典 多处理
