fork()
Python を使用して、システム コールを使用して Linux にある機能を Windows で再現できるロジックを実装するにはどうすればよいですか?
私は特に SAPI Com コンポーネントでメソッドを実行しようとしていますが、ブロックや待機をせずにメイン スレッドで他のロジックを続行しています。
fork()
Python を使用して、システム コールを使用して Linux にある機能を Windows で再現できるロジックを実装するにはどうすればよいですか?
私は特に SAPI Com コンポーネントでメソッドを実行しようとしていますが、ブロックや待機をせずにメイン スレッドで他のロジックを続行しています。
どこでも機能する python multiprocessing モジュールを使用します。
これは、os.fork() から multiprocessing モジュールに変換する方法を示すIBM developerWords の記事です。
fork()
実際、 Cygwinの下の Windows で複製されていますが、かなり毛むくじゃらです。
Cygwin の fork 呼び出しは、Win32 API の上に適切にマップされないため、特に興味深いものです。これにより、正しく実装することが非常に困難になります。
このハックの説明については、 The Cygwin User's Guideを参照してください。
Greg が指摘した os モジュールのプロセス管理コードに加えて、threading モジュールも参照する必要があります: https://docs.python.org/library/threading.html
from threading import Thread
def separate_computations(x, y):
print sum(x for i in range(y)) # really expensive multiplication
Thread(target=separate_computations, args=[57, 83]).start()
print "I'm continuing while that other function runs in another thread!"
Eli の Threading の例は、スレッドを実行しますが、その行の後の作業は何もしません。
処理モジュールとサブプロセス モジュールを調べます。私が実行しているcomメソッドは、別のスレッドだけでなく、別のプロセスにある必要があると思います。
os モジュールのプロセス管理機能を見てください。同期と非同期の両方で、さまざまな方法で新しいプロセスを開始するための関数があります。
Windows は、他のシステムの fork() とまったく同じ機能を提供していないことにも注意してください。Windows でマルチプロセッシングを行うには、 threadingモジュールを使用する必要があります。
また、処理モジュール ( http://pypi.python.org/pypi/processing ) を使用することもできます。threading モジュールと同じ API を使用して並列システムを作成するための多くの機能があります...
おそらく、python 用の spawn() のバージョンですか? http://en.wikipedia.org/wiki/Spawn_(オペレーティング システム)