3

私のコンピューターには i7 CPU があり、pyqt アプリケーションの時間計算のパフォーマンスを向上させるために、マルチプロセッシング モジュールを使用しようとしています。私がpyqtアプリケーションで次のようなことをすると:

import multiprocessing as multiprocessing

def foo(ii):
    print ii

pool = multiprocessing.Pool(8)
pool.map(foo, range(10))

次に、アプリケーションは最初のメイン ウィンドウのクローンである 8 つの pyqt GUI を生成します (合計で、もちろん間違っている 9 つの pyqt GUI があります。やりたいことは、並列計算であり、メイン GUI xD のクローンではありません)。

私もjoblibライブラリ(http://pythonhosted.org/joblib/)を試しましたが、問題は同じです。

multiprocessing または joblib モジュールを使用して pyqt アプリケーションで並列計算を行う方法はありますか?

助けてくれてありがとう

4

3 に答える 3

4

Windows を使用している場合、マルチプロセッシングはメイン モジュールをインポートする新しいプロセスを起動します。GUI 作成コードは、必ず以下に配置して保護してください。if __name__ == '__main__':

さらに良いことに、サブプロセスで PyQt を不必要にインポートするオーバーヘッドを回避するには、次のような単純な新しいメイン モジュールを作成します。

if __name__ == '__main__':
    import old_main_module
    old_main_module.main()
于 2013-03-20T11:00:17.077 に答える
1

pyqt の複数のプロセスを生成したいですか、それともアプリケーションの「ロジック」にプロセスを追加したいですか?

さらに要点: pyqt コンテナーをマルチプロセスしないでください。並列処理が必要な場合は、アプリケーションのロジックでプロセスを生成し、結果をビュー レイヤーに返します。

于 2013-03-20T10:38:56.883 に答える