python3.x - python多線程如何修改數(shù)據(jù)?
問題描述
代碼比較簡單
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)
因為真實的環(huán)境比較多,所以簡化了代碼,我大概的需求就是list1是一個比較多的數(shù)據(jù)列表,然后在多線程處理的時候,每次更新其中一項數(shù)據(jù)...
但是我運行以后,發(fā)現(xiàn)list1還是[1,2,3] , 我理想應該是[99,2,3]
有高手指點一下要如何實現(xiàn)嗎?
問題解答
回答1:不好意思,你用的multiprocessing是多進程而不是多線程,每個進程中的變量都是獨立的,
你應該使用threading,這個才是多線程
如果你堅持用multiprocessing,就必須用共享變量,你可以將list里的數(shù)據(jù)存入Queue中,Queue是python中的共享隊列,用于多進程通信的
相關文章:
1. node.js - nodejs+express+vue2. 使用mysql命令行連接遠程數(shù)據(jù)庫host跳轉(zhuǎn)3. python - 如何把152753這個字符串轉(zhuǎn)變成時間格式15:27:534. javascript - onclick事件點擊不起作用5. java - web端百度網(wǎng)盤的一個操作為什么要分兩次請求服務器, 有什么好處嗎6. DADB.class.php文件的代碼怎么寫7. python 字符串匹配問題8. 數(shù)據(jù)庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。9. javascript - 如何獲取未來元素的父元素在頁面中所有相同元素中是第幾個?10. python對8000行csv添加列

網(wǎng)公網(wǎng)安備