1

我正在尝试构建一个并行运行多个进程的 python 脚本。基本上,这些进程是独立的,在不同的文件夹上工作,并将它们的输出作为文本文件保留在这些文件夹中。但在某些特殊情况下,进程可能会以特殊(布尔)状态终止。如果是这样,我希望所有其他进程立即终止。做这个的最好方式是什么?

在阅读了 Doug Hellmann 的优秀教程后,我已经摆弄了 multiprocessing.condition() 和 multiprocessing.manager:http: //pymotw.com/2/multiprocessing/communication.html 但是,我似乎不明白如何获得一个多处理进程,用于监视状态指示器并在它采用特殊值时退出。

为了举例说明这一点,我编写了下面的小脚本。它在某种程度上做了我想要的,但以异常结束。非常欢迎就更优雅的方式提出建议:

兄弟,格罗

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