【发布时间】:2012-07-09 08:19:07
【问题描述】:
在尝试创建线程时,我在将带星号的表达式与固定参数列表结合使用时遇到问题。
考虑以下代码:
the_queue = Queue()
def do_something(arg1, arg2, queue):
# Do some stuff...
result = arg1 + arg2
queue.put(result)
def init_thread(*arguments):
t = Thread(target=do_something, args=(arguments, the_queue))
t.start()
t.join()
init_thread(3,6)
这会引发异常:
TypeError: do_something() takes exactly 3 arguments (2 given)
换句话说,“arguments”元组被评估为一个元组对象(即它没有解包),而 the_queue 被视为第二个参数。
代码需要能够用未知数量的参数初始化调用不同方法的线程,但最后总是会有一个“队列”参数。
有什么方法可以实现吗?在那种情况下,怎么办?如果不是 - 我做错了什么?
谢谢。
编辑:我应该补充一点,以队列作为参数调用“init_thread()”方法不是一个选项,因为我不希望我的其余代码“了解”线程处理程序的工作方式内部...
【问题讨论】:
标签: python multithreading iterable-unpacking