0

Windows で動作する Python コードがありますが、Linux で実行するとハングします。私は JPype を使用しているので、複数の共有プロセスが同じパイプを使用して Java にアクセスしようとすると、問題が発生する可能性があると思われます (異なるプロセスが作成されますが、JPype 行でハングします)。Pathos でスポーンを強制して Windows の実装をコピーする方法はありますか? (たとえば、通常のマルチプロセッシング ライブラリの set_start_method または get_context?)

ありがとう。

4

1 に答える 1

2

私自身の質問に答えるには(そして少し厄介です)、コードを掘り下げた後、次のことができます:

import multiprocess.context as ctx
ctx._force_start_method('spawn')

これにより、JPype がハングするという問題が喜んで解決されます。Linux と Windows の違いは、Windows が新しいプロセスを生成すると、新しい JVM が開始される (jpype.startJVM()) のに対し、フォークされたプロセスは同じプロセスを使用する必要があることです (したがって、複数のプロセスが試行していることが推測されます)。 Java への同じパイプを使用するため)。私が知る限り、 set_start_method は実装されていないようです。

于 2016-11-16T15:05:53.850 に答える