如何在concurrent.futures.ProcessPoolExecute中映射类和函数

时间:2017-09-14 15:19:07

标签: python concurrent.futures

我在Python中完成了一个并发任务,如下面的代码

def fun_x(a, b) :
    for x in range(10000) :
        x = x*x
            for y in range(10000) :
                y = y*y
    return a*x, b*y


with futures.ProcessPoolExecutor() as executor:
    futures_all_data = {executor.submit(fun_x,     # Function name
                                        number_a,   # args 1
                                        number_b,   # args 2
                                        ) : number_a 
                                        for number_a, number_b in arg }
output_final = {}
for future in futures.as_completed(futures_all_data, timeout = None) :
        result_Code, result_content = future.result()
        output_final[result_Code] = result_content

return output_final

目前,我需要使用和类和子函数而不是funx,比如

def class_x(object):
    __init__(self, a):
        for x in range(10000):
            x = x*x
        a = a*x
    def fun_y(self, b) :
        for y in range(10000):
            y = y*y
        b = y*b + a

但是,我不知道如何处理executor.submit部分?

你能给我一些指导吗?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

我不确定你的代码真的想做什么,似乎你的代码格式不好。但是我有一个想法,为类创建任何功能

假设我们有一个函数x

def x(args):
    body

使它成为一个类:

import collections

class X(collections.abc.callable):
    def __call__(self, args):
        body
x = X()

# usage
x(args)

所以你不必改变太多的东西,你得到了一个X类,当你需要调用它时,你仍然使用x(args)

PS:x是X级的实例。