[英]Object method as multiprocessing.Process target
我正在修改線程,有人可以對這里發生的事情有所了解嗎?
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.
我知道期望工作將意味着一些真正的粗略的線程通信,但是看起來在某個時候有兩個Thing()對象,一個對我可用,一個在Process()內部。 什么時候復制?
最重要的是:
我該如何更改self.a
在Process()
?
在這種情況下,您使用的是進程而不是線程,因此需要進程間通信。 您可以使用隊列來實現。 參見http://docs.python.org/dev/library/multiprocessing.html ,查找17.2.1.3。 在流程之間交換對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.