在腳本的主線程中,我設置了一個名為的變量queue并用 URL 填充它。然后我創建了 8 個進程multiprocessing.Process,然后這些進程使用該threading庫產生了 10 個線程。在線程工作者(由上述另一個進程產生)中,我有global queue.然后會queue.get()按預期行動嗎?我試過了,在某些測試中似乎沒問題,而在其他測試中則不然。問題是,可以從另一個進程和線程訪問全局變量嗎?
1 回答

藍山帝景
TA貢獻1843條經驗 獲得超7個贊
很難理解你到底在問什么。但是這里有兩個主要問題:
可以從另一個進程訪問全局變量嗎?
不,不是沒有某種形式的進程間通信,即使這樣,您也會將該變量的副本傳遞給另一個進程。每個進程都有自己的全局狀態。
可以從另一個線程訪問全局變量嗎?
是的,同一個進程中的線程可以訪問全局變量,但是必須保證多線程訪問的任何內存的安全。這意味著,線程不應與其他線程同時訪問可寫內存,否則您可能會面臨一個線程寫入內存而另一個線程嘗試讀取它的風險。
回答上面的問題
如果我正確理解設置,您的每個子進程都有自己的全局變量queue
。每一個都queues
應該只能由在該進程中產生的線程訪問。
添加回答
舉報
0/150
提交
取消