多处理:条件回调?

时间:2018-01-27 00:06:32

标签: python multiprocessing

我正在使用此代码作为模板( KILLING IT 部分) https://stackoverflow.com/a/36962624/9274778

所以我现在已经解决了这个问题......将代码改为以下

import random
from time import sleep

def worker(i,ListOfData):
    print "%d started" % i
    #MyCalculations with ListOfData
    x = ListOfData * Calcs
    if x > 0.95:
        return ListOfDataRow, True
    else:
        return ListOfDataRow, False

仅在主要

中运行的回调
def quit(arg):
    if arg[1] == True:
        p.terminate()  # kill all pool workers

if __name__ == "__main__":
    import multiprocessing as mp
    Loops = len(ListOfData) / 25
    Start = 0
    End = 25
    pool = mp.Pool()
    for y in range(0,Loops)
        results = [pool.apply(worker, args=(i,ListOfData[x]),callback = quit) 

    for y in range(0,len(ListofData))]

        for c in results:
            if c[1] == True
                break

        Start = Start + 25
        End = End +25

所以我将我的数据框块(假设现在我的ListOfData总是可被25整除)并将其发送到多处理。我发现我的PC性能组最好25个。如果第一组没有返回TRUE,那么我转到下一个块。

我无法使用async方法,因为它在不同的时间运行,有时候我会得到一个TRUE回到列表的下方(不是我想要的)。

0 个答案:

没有答案