[英]Is shared readonly data copied to different processes for multiprocessing?
[英]Shared state in multiprocessing Processes
請考慮以下代碼:
import time
from multiprocessing import Process
class Host(object):
def __init__(self):
self.id = None
def callback(self):
print "self.id = %s" % self.id
def bind(self, event_source):
event_source.callback = self.callback
class Event(object):
def __init__(self):
self.callback = None
def trigger(self):
self.callback()
h = Host()
h.id = "A"
e = Event()
h.bind(e)
e.trigger()
def delayed_trigger(f, delay):
time.sleep(delay)
f()
p = Process(target = delayed_trigger, args = (e.trigger, 3,))
p.start()
h.id = "B"
e.trigger()
這給出了輸出
self.id = A
self.id = B
self.id = A
但是,我希望它能給
self.id = A
self.id = B
self.id = B
..因為在調用觸發方法時h.id已更改為“ B”。
似乎是在啟動單獨的進程時創建了主機實例的副本,因此原始主機中的更改不會影響該副本。
在我的項目中(當然,要進行更詳細的說明),主機實例字段有時會更改,並且由在單獨的進程中運行的代碼觸發的事件可以訪問這些更改很重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.