1

複数のプロセスを並行して実行する Python スクリプトを作成しようとしています。基本的に、プロセスは独立しており、異なるフォルダーで動作し、それらの出力をそれらのフォルダーにテキスト ファイルとして残します。ただし、特殊なケースでは、プロセスが特別な (ブール値の) ステータスで終了することがあります。もしそうなら、他のすべてのプロセスをすぐに終了させたいです。これを行う最善の方法は何ですか?

Doug Hellmann による優れたチュートリアルを読んだ後、multiprocessing.condition() と multiprocessing.manager をいじりました : http://pymotw.com/2/multiprocessing/communication.htmlステータスインジケータを監視し、特別な値をとった場合に終了するマルチプロセッシングプロセス。

これを例証するために、以下の小さなスクリプトを作成しました。それは私が望むことをいくらかしますが、例外で終わります。より洗練された進め方に関する提案を歓迎します:

br、グロ

import multiprocessing

def input(i):
    """arbitrary chosen value(8) gives special status = 1"""        
    if i == 8:
        value = 1
    else:
        value = 0
    return value

def sum_list(list):
"""accumulative sum of list"""
    sum = 0
    for x in range(len(list)):
            sum = sum + list[x]
    return sum

def worker(list,i):
    value = input(i)
    list[i] = value
    print 'processname',i

if __name__ == '__main__':
    mgr = multiprocessing.Manager()
    list = mgr.list([0]*20)
    jobs = [ multiprocessing.Process(target=worker, args=(list,i))
                for i in range(20)
        ]
for j in jobs:
    j.start()
    sumlist = sum_list(list)
    print sumlist
    if sumlist == 1:
        break
for j in jobs:
    j.join()
4

0 に答える 0