私はスレッドをいじっています。誰かがここで何が起こっているのかについていくつかの光を当てることができますか?
from multiprocessing import Process
from time import sleep
class Thing(object):
def __init__(self):
print "__init__:", id(self)
self.a = 100
self.b = 200
def run(self):
while True:
sleep(5)
print id(self.a), self.a, '*', id(self.b), self.b
次に、次の方法でこのスクリプトを開きpython -i
ます。
t = Thing()
p = Process(target=t.run)
p.start()
# Thread starts running and reporting IDs every 5 seconds
# if I do..
t.a = 500
# The address of `t.a` changes (using `id()`) and the thread still reports 100.
機能することを期待することは、非常に大雑把なスレッド通信を意味することを理解していますが、ある時点で、私が利用できるものと Process() 内にあるものの 2 つの Thing() オブジェクトがあるように見えます。いつコピーされますか?
そして最も重要なこと:
self.a
INSIDE theの値を変更するにはどうすればよいProcess()
ですか?