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

问题描述:

我已经做在Python并发的任务,如下面的代码如何映射类和函数在concurrent.futures.ProcessPoolExecute

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部分?

你能给我一些指导吗?

非常感谢!

+0

你能解释一下你想要什么:for x in range(10000):x = x * x?为什么不只是做a = a * 10000 * 10000? –

+0

@MenglongLi它只是一个简单的函数来节省时间并获得并发性能。 –

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

说我们有一个函数x

def x(args): 
    body 

,使之成为类:

import collections 

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

# usage 
x(args) 

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

PS:x是在类X中的一种。

+0

谢谢你的回复。有两个参数需要分别输入到class_x和func_y。我不知道你如何实现这个方法。但是你给了我一个想法,我可以创建一个新的函数来调用class_x和func_y。 –

+0

那么为什么不让两个单独的课程^ _^ –

+0

哈哈哈。这个想法是最后的选择。(╯_╰)╭。我正在研究你的方法。我很感激! @孟龙龙 –