Maison  >  Questions et réponses  >  le corps du texte

python3.x - python多线程如何修改数据?

代码比较简单

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]

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

迷茫迷茫2740 Il y a quelques jours519

répondre à tous(1)je répondrai

  • 怪我咯

    怪我咯2017-04-18 10:22:02

    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

    répondre
    0
  • Annulerrépondre