被包装函数有参数
from joblib import Parallel, delayed
host = "127.0.0.1"
url = "login"
def send_req(host, url):
print(host, url)
def run_send_req(host, url, thread):
Parallel(n_jobs=thread)(delayed(send_req)(host,url) for _ in range(thread))
if __name__ == '__main__':
run_send_req(host, url, 2)
被包装函数无参数
import time
from joblib import Parallel, delayed
from tqdm import tqdm
def task_demo(arg):
time.sleep(1)
return time.time()
if __name__ == '__main__':
num_jobs = 15
num_threads = 3
results = Parallel(n_jobs=num_threads)(
delayed(task_demo)(arg) for arg in tqdm(range(num_jobs))
)
"""
Q:
def task_demo(arg)中的(arg)在本函数中并没有使用,但是为什么删除后会报错呢
A:
在示例代码中,task_demo 函数的参数 arg 被传递给了 delayed 装饰器并在后面的循环中使用。即使在 task_demo 函数内部没有直接使用 arg 参数,它仍然需要在函数定义中声明,以便在后续的调用中正确传递参数。
如果你删除了 task_demo 函数的参数 arg,那么在调用 delayed(task_demo) 时会导致错误。因为 delayed 装饰器期望接收一个函数作为参数,并将函数的参数传递给它。如果你删除了 task_demo 的参数,那么 delayed 将无法获取到参数值,从而导致错误。
因此,在示例代码中,即使在 task_demo 函数内部没有直接使用 arg 参数,你仍然需要保留函数定义中的 (arg),以确保代码能够正常运行。
"""