我正在使用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。
由于
答案 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类将为您提供所需的一切