国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

python3.x - python多線程如何修改數(shù)據(jù)?

瀏覽:111日期: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)

因?yàn)檎鎸?shí)的環(huán)境比較多,所以簡化了代碼,我大概的需求就是list1是一個(gè)比較多的數(shù)據(jù)列表,然后在多線程處理的時(shí)候,每次更新其中一項(xiàng)數(shù)據(jù)...

但是我運(yùn)行以后,發(fā)現(xiàn)list1還是[1,2,3] , 我理想應(yīng)該是[99,2,3]

有高手指點(diǎn)一下要如何實(shí)現(xiàn)嗎?

問題解答

回答1:

不好意思,你用的multiprocessing是多進(jìn)程而不是多線程,每個(gè)進(jìn)程中的變量都是獨(dú)立的,

你應(yīng)該使用threading,這個(gè)才是多線程

如果你堅(jiān)持用multiprocessing,就必須用共享變量,你可以將list里的數(shù)據(jù)存入Queue中,Queue是python中的共享隊(duì)列,用于多進(jìn)程通信的

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 恩施市| 平谷区| 赤水市| 高台县| 陆川县| 贡嘎县| 桃江县| 张家川| 武功县| 东兴市| 西藏| 昭苏县| 林口县| 保靖县| 富川| 屏山县| 东兰县| 芮城县| 宁国市| 吐鲁番市| 运城市| 蓬安县| 太康县| 通许县| 酒泉市| 柳林县| 聊城市| 天峨县| 大田县| 监利县| 涪陵区| 安康市| 大邑县| 北安市| 宣武区| 太仆寺旗| 西乌| 道孚县| 连江县| 沐川县| 岗巴县|