如何映射类和函数在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部分?
你能给我一些指导吗?
非常感谢!
我不确定你的代码真的想做什么,似乎你的代码格式不好。但是,我有一个想法,作任何功能的一类
说我们有一个函数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中的一种。
谢谢你的回复。有两个参数需要分别输入到class_x和func_y。我不知道你如何实现这个方法。但是你给了我一个想法,我可以创建一个新的函数来调用class_x和func_y。 –
那么为什么不让两个单独的课程^ _^ –
哈哈哈。这个想法是最后的选择。(╯_╰)╭。我正在研究你的方法。我很感激! @孟龙龙 –
你能解释一下你想要什么:for x in range(10000):x = x * x?为什么不只是做a = a * 10000 * 10000? –
@MenglongLi它只是一个简单的函数来节省时间并获得并发性能。 –