Python多处理更改了变量但没有更新?

时间:2018-09-30 08:43:02

标签: python

我来自台湾,英语不好,对不起。

我尝试了以下代码部分,您可以看到我打印了内存地址。

这两个内存地址相同,但是当$saved返回时, 这是错误的,因为function getObject() { return { param1: this.obj1.hp, param2: this.obj2.hp }; } function bindObject() { let obj1 = { hp: 100 }; let obj2 = { hp: 50 }; return getObject.bind({ obj1, obj2 }); } console.log(bindObject()());列表为空。

但是best_action已将项目添加到子级列表中。是什么导致此错误?谢谢。

self.root.children

1 个答案:

答案 0 :(得分:0)

子进程与父进程共享的内存空间不同。出于您的目的,应该将threading模块使用多线程。

from threading import Thread

然后更改:

p.append(Process(target=self.simulate))

收件人:

p.append(Thread(target=self.simulate))

但是请警惕线程之间的竞争状况,因为所有线程共享相同的内存空间。您应该在更新线程之间共享的对象的操作周围使用threading.Lockthreading.RLock,以使代码具有线程安全性。