我需要列表中的每个目录句柄都在不同的线程中解决。 我的代码:
while len(handles_list) != 0:
threading.Thread(target=handle_thread, args=handles_list,).start()
handles_list.pop(0)
def handle_thread(handle):
# do stuff with handle
这样写的它给出了一个错误,即def只接受一个参数 - 给出两个参数(或者更多,取决于列表的内容)。那么如何启动3个不同的线程给它们args handles_list [0],handles_list [1] ..等等。
答案 0 :(得分:1)
线程对象期望目标函数具有该列表中包含的参数。您正在传递整个句柄列表,但目标函数需要一个句柄。
因此,您需要将单个句柄传递给您创建的每个线程。但是args
参数需要是一个可迭代的,其长度是目标函数所期望的参数数量。所以你这样写:
for handle in handles_list:
threading.Thread(target=handle_thread, args=[handle]).start()
或者如果你更喜欢使用元组而不是列表:
for handle in handles_list:
threading.Thread(target=handle_thread, args=(handle,)).start()
本文简要介绍了传递给线程类的参数:Python Threading Arguments, Andrew Ippoliti。