2

重複の可能性:
Python のマルチプロセッシング プールでのキーボード割り込み

Python のマルチプロセッシング モジュールには、Pool http://docs.python.org/library/multiprocessing.html#module-multiprocessing.poolと呼ばれるものがあります。

プロセスのプールが動作している間、KeyboardInterrupt、つまり Ctrl + C を使用してスクリプトを終了させることができません。プールは新しいプロセスを生成し、抜け出す唯一の方法は ctrl + z に続いてそれらを手動で強制終了することです。

これをテストしようとしたスクリプトは次のとおりです。

import multiprocessing
import random
import time

def sometask(arg):
    #do something nasty to arg
    time.sleep(arg)
    return random.randint(0,arg)

if __name__=="__main__":
    pool = multiprocessing.Pool(processes=4)
    print pool.map(sometask, range(10))

私のメイン スクリプトは、time.sleep() よりもはるかに時間がかかる処理を実行しようとします。テスト実行を試みるたびに、最初にプロセスの ID を見つけて手動で終了または強制終了する必要があります。産んだ。回避策を提案してください。

4

1 に答える 1

1

私もこの問題に直面しました。考えられる回避策 (汚いもの) は、別のプロセスを生成し、そのプロセスにメイン スクリプトの PID を渡すことです。そのプロセスにメイン スクリプトを強制終了させます。私はこれを試しましたが、私にとってはうまくいきます。

于 2012-07-16T14:13:28.387 に答える