2

我正在使用 Python 2.7。我想创建一个对象的实例,并在一个单独的进程中调用其中的一个方法。像这样的东西:

import subprocesss
class A
   def doAwork(self, text):
      print text

class B
   def doBWork
      aInst = A()
      subprocess(A.dowork("called from doBwork"))

这可以做到吗,或者,我需要转身将python称为子进程吗?

编辑: 我不能为此使用线程。aInst 中调用的方法实际上加载了一个非线程安全的 dll。

谢谢

4

3 回答 3

2

您必须使用多处理模块而不是subprocess

从上面的文档链接复制的简单示例:

from multiprocessing import Process

def f(name):
    print 'hello', name

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

以您的示例为例,它看起来像这样:

from multiprocessing import Process

class A:
   def doAwork(self, text):
      print text

class B:
   def doBweork(self):
      aInst = A()
      p = Process(target=aInst.doAwork("called from doBWork")
      p.start()
      p.join()
于 2013-09-17T19:19:14.110 回答
0

subprocess用于生成进程(Windows 上的 EXE)而不是函数。在这种情况下,您可以使用线程:

import thread

class A:
   def doAwork(self, text):
      print text

class B:
   def doBwork(self):
      aInst = A()
      thread.start_new_thread(aInst.doAwork, ("called from doBwork",))

B().doBwork()
于 2013-09-17T19:17:45.557 回答
0

多处理 http://docs.python.org/2/library/multiprocessing.html Process 类将为您提供所需的一切

于 2013-09-17T19:19:13.257 回答