簡體   English   中英

對象方法作為多處理過程目標

[英]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.aProcess()

在這種情況下,您使用的是進程而不是線程,因此需要進程間通信。 您可以使用隊列來實現。 參見http://docs.python.org/dev/library/multiprocessing.html ,查找17.2.1.3。 在流程之間交換對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM