文章詳情頁
python3.x - python多線程如何修改數據?
瀏覽:104日期:2022-09-19 10:48:24
問題描述
代碼比較簡單
import multiprocessingimport timelist1 = [1,2,3]def func(msg): list1[0] = 99 return 'done ' + msgif __name__ == '__main__': pool = multiprocessing.Pool(processes=4) for i in range(10):msg = 'hello %d' % (i)pool.apply_async(func, (msg,)) pool.close() pool.join() print (list1)
因為真實的環境比較多,所以簡化了代碼,我大概的需求就是list1是一個比較多的數據列表,然后在多線程處理的時候,每次更新其中一項數據...
但是我運行以后,發現list1還是[1,2,3] , 我理想應該是[99,2,3]
有高手指點一下要如何實現嗎?
問題解答
回答1:不好意思,你用的multiprocessing是多進程而不是多線程,每個進程中的變量都是獨立的,
你應該使用threading,這個才是多線程
如果你堅持用multiprocessing,就必須用共享變量,你可以將list里的數據存入Queue中,Queue是python中的共享隊列,用于多進程通信的
相關文章:
1. javascript - 在 model里定義的 引用表模型時,model為undefined。2. css3 - 這個右下角折角用css怎么畫出來?3. javascript - canvas 裁剪空白區域4. atom開始輸入!然后按tab只有空格出現沒有html格式出現5. css3 - 沒明白盒子的height隨width的變化這段css是怎樣實現的?6. java - 我設置了cookie的max age,但是cookie依然在關閉游覽器后消失了7. apache - 想把之前寫的單機版 windows 軟件改成網絡版,讓每個用戶可以注冊并登錄。類似 qq 的登陸,怎么架設服務器呢?8. javascript - 一個關于客戶端和前端通信的疑惑?9. python3.x - c++調用python310. java - 根據月份查詢多個表里的內容怎么實現好?
排行榜
