小编use*_*534的帖子

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

假设我有以下代码:

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()
Run Code Online (Sandbox Code Playgroud)

我只想计算输出直到输出 > 给定数字(可以假设输出元素随着 x 的增加单调减少)然后停止(不计算 x 的所有值然后排序,这对我的目的来说效率低下)。有没有办法使用并行、延迟或任何其他多处理来做到这一点?

python python-3.x joblib python-multiprocessing

8
推荐指数
1
解决办法
361
查看次数