我想在python中定义一个do_in_parallel
函数,它将接收带有参数的函数,为每个函数创建一个线程并并行执行它们。该功能的工作原理如下:
do_in_parallel(_sleep(3), _sleep(8), _sleep(3))
但是,我很难定义do_in_parallel
函数来获取每个函数都有多个参数的多个函数,下面是我的尝试:
from time import sleep
import threading
def do_in_parallel(*kwargs):
tasks = []
for func in kwargs.keys():
t = threading.Thread(target=func, args=(arg for arg in kwargs[func]))
t.start()
tasks.append(t)
for task in tasks:
task.join()
def _sleep(n):
sleep(n)
print('slept', n)
按此方式使用,并得到以下错误:
do_in_parallel(_sleep=3, _sleep=8, _sleep=3)
>> do_in_parallel(sleepX=3, sleepX=8, sleepX=3)
^
>> SyntaxError: keyword argument repeated
有人能解释一下我需要在函数中更改什么,以便它可以接受多个函数参数吗
do_in_parallel(_sleep(3), _sleep(8), maybe_do_something(else, and_else))
这个调用结构无论如何都不起作用,因为您正在将目标函数的结果传递给
do_in_parallel
(您已经在调用\u sleep等)。你知道吗相反,您需要做的是将任务捆绑起来,并将这些任务传递给处理函数。这里的任务是一个元组,包含要调用的目标函数和参数元组
task = (_sleep, (n,))
。你知道吗我建议您使用线程池和
apply_async
方法来处理单独的任务。你知道吗输出:
相关问题 更多 >
编程相关推荐