【问题标题】:Python Multiple function execution in ParallelPython 多函数并行执行
【发布时间】:2021-07-11 06:31:39
【问题描述】:

寻找一种并行执行多个功能的方法。我查看了多处理,但想看看是否有人有此用例的示例:

我有以下几点:

data = function1(arg1,arg2,arg3,arg4)
data1 = functiun2(arg1,arg2,arg3,arg4, arg5, arg6)
data2 = functiun1(arg1,arg2,arg3,arg4, arg5)

# and so on for around 30 functions (only executes the 3 functions with separate args).

如何将这些带入多处理线程?

【问题讨论】:

  • 多处理不是真正的并行处理,只是对它的一种模拟。它实际上使您的程序稍微慢了一点。它应该只用于网络请求之类的事情。不是繁重的计算。 python 不能做多线程。期间。

标签: python python-multiprocessing


【解决方案1】:

我应该可以做这样的事情

from multiprocessing import Pool

# Define function 1

# Define function 2

if __name__ == '__main__':
    processes = 30

    pool1 = Pool(processes)
    result1 = pool1.starmap_async(function1, [[arg1,arg2,arg3,arg4] for i in range(processes)])

    pool2 = Pool(processes)
    result2 = pool2.starmap_async(function2, [[arg1,arg2,arg3,arg4, arg5, arg6] for i in range(processes)])

    pool3 = Pool(processes)
    result3 = pool3.starmap_async(function1, [[arg1,arg2,arg3,arg4, arg5] for i in range(processes)])

    data = result1.get()
    data2 = result2.get()
    data3 = result3.get()

    pool1.close()
    pool1.join()

    pool2.close()
    pool2.join()

    pool3.close()
    pool3.join()

它将执行 30 个函数中的每一个函数 30 次。请注意,我建议使用循环来压缩它,但为了便于阅读,我将其保留原样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多