2

私は数日間 Python で multiprocessing モジュールを勉強しています。

しかし、解決できないという奇妙な問題に遭遇しました。

ソース コードは非常に単純ですが、このコードを実行しても結果が得られません。

コードは次のとおりです。

import multiprocessing as multi

def worker():
    print "Worker!!!"
    return

jobs = []

for i in range(5):
    p = multi.Process(target = worker)
    jobs.append(p)
    p.start()

「Worker!!!」を5回印刷することを期待していました。

しかし、私が持っている唯一のものは

* リモートインタープリターの再初期化 *

">>>"

">>>"

この問題を解決するアイデアを持っている人はいますか??

私を助けてください!!!

4

1 に答える 1

1

によるとmultiprocessing documentation

ノート

このパッケージ内の機能では、__main__ モジュールが子によってインポート可能である必要があります。これはプログラミング ガイドラインで説明されていますが、ここで指摘する価値があります。これは、 multiprocessing.Pool の例などの一部の例が対話型インタープリターでは機能しないことを意味します。

...

メインモジュールの安全なインポート

意図しない副作用 (新しいプロセスの開始など) を引き起こすことなく、メイン モジュールが新しい Python インタープリターによって安全にインポートできることを確認してください。

...

if __name__ == '__main__'を使用して、プログラムの「エントリ ポイント」を保護する必要があります。

したがって、プログラムは次のようになります。

import multiprocessing as multi

def worker():
    print "Worker!!!"

if __name__ == '__main__':
    jobs = []
    for i in range(5):
        p = multi.Process(target = worker)
        jobs.append(p)
        p.start()
    for job in jobs:
        job.join()
于 2013-09-13T03:10:21.180 に答える