如何实现并行,延迟以使当输出低于阈值时,并行化的for循环停止?

问题描述 投票:8回答:2

假设我有以下代码:

from scipy import *
import multiprocessing as mp
num_cores = mp.cpu_count()
from joblib import Parallel, delayed
import matplotlib.pyplot as plt

def func(x,y):
    return y/x
def main(y, xmin,xmax, dx):
    x = arange(xmin,xmax,dx)
    output = Parallel(n_jobs=num_cores)(delayed(func)(i, y) for i in x)
    return x, asarray(output)
def demo():
    x,z = main(2.,1.,30.,.1)
    plt.plot(x,z, label='All values')
    plt.plot(x[z>.1],z[z>.1], label='desired range') ## This is better to do in main()
    plt.show()

demo()

我只想计算输出直到输出>给定的数字(可以假设输出元素随x的增加而单调减少),然后停止(不计算x的所有值然后进行排序,这对我而言效率不高)。有什么方法可以使用并行,延迟或任何其他多处理功能?

python python-3.x python-multiprocessing joblib
2个回答
1
投票

没有指定output > a given number,所以我只补了一个。经过测试,我不得不扭转正确操作的条件output < a given number


0
投票

我将使用Dask并行执行,特别是futures接口,以便在完成结果时实时反馈结果。完成后,您可以取消飞行中的剩余期货,租用不需要的期货以异步完成,或关闭集群。

© www.soinside.com 2019 - 2024. All rights reserved.