Python子进程:调用实例方法

时间:2013-09-17 19:10:49

标签: python subprocess

我正在使用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。

由于

3 个答案:

答案 0 :(得分:1)

您必须使用multiprocessing模块而不是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()

答案 1 :(得分: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()

答案 2 :(得分:0)

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