23

fork()Python を使用して、システム コールを使用して Linux にある機能を Windows で再現できるロジックを実装するにはどうすればよいですか?

私は特に SAPI Com コンポーネントでメソッドを実行しようとしていますが、ブロックや待機をせずにメイン スレッドで他のロジックを続行しています。

4

7 に答える 7

18

どこでも機能する python multiprocessing モジュールを使用します。

これは、os.fork() から multiprocessing モジュールに変換する方法を示すIBM developerWords の記事です。

于 2011-05-16T16:51:18.377 に答える
10

fork() 実際、 Cygwinの下の Windows で複製されていますが、かなり毛むくじゃらです。

Cygwin の fork 呼び出しは、Win32 API の上に適切にマップされないため、特に興味深いものです。これにより、正しく実装することが非常に困難になります。

このハックの説明については、 The Cygwin User's Guideを参照してください。

于 2008-10-04T14:10:36.223 に答える
3

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!"
于 2008-08-22T21:16:07.807 に答える
3

Eli の Threading の例は、スレッドを実行しますが、その行の後の作業は何もしません。

処理モジュールとサブプロセス モジュールを調べます。私が実行しているcomメソッドは、別のスレッドだけでなく、別のプロセスにある必要があると思います。

于 2008-09-09T15:37:18.423 に答える
3

os モジュールのプロセス管理機能を見てください。同期と非同期の両方で、さまざまな方法で新しいプロセスを開始するための関数があります。

Windows は、他のシステムの fork() とまったく同じ機能を提供していないことにも注意してください。Windows でマルチプロセッシングを行うには、 threadingモジュールを使用する必要があります。

于 2008-08-22T20:38:18.147 に答える
2

また、処理モジュール ( http://pypi.python.org/pypi/processing ) を使用することもできます。threading モジュールと同じ API を使用して並列システムを作成するための多くの機能があります...

于 2008-08-24T15:38:21.143 に答える
0

おそらく、python 用の spawn() のバージョンですか? http://en.wikipedia.org/wiki/Spawn_(オペレーティング システム)

于 2008-08-22T20:34:00.747 に答える