python3.x - python多线程如何修改数据?
迷茫
迷茫 2017-04-18 10:20:02
0
1
526

代码比较简单

import multiprocessing
import time

list1 = [1,2,3]
def func(msg):
    list1[0] = 99
    return "done " + msg


if __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]

有高手指点一下要如何实现吗?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(1)
刘奇

Désolé, le multiprocessing que vous avez utilisé est multi-processus au lieu de multi-thread. Les variables de chaque processus sont indépendantes,

.

Vous devriez utiliser threading, c'est du multi-threading

Si vous insistez pour utiliser multiprocessing, vous devez utiliser des variables partagées. Vous pouvez stocker les données dans list dans Queue
est la file d'attente partagée dans Queue pour multi-processus. communiquerpython

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!