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

代わりに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()
于 2013-09-17T19:19:14.110 に答える
0

multiprocessing http://docs.python.org/2/library/multiprocessing.html Process クラスは、必要なものすべてを提供します

于 2013-09-17T19:19:13.257 に答える
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 に答える