我正在使用此代码作为模板( 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回到列表的下方(不是我想要的)。