スレッドを作成しようとするときに、スター付き式を固定引数リストと組み合わせて使用するのに問題があります。
次のコードを検討してください。
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」タプルは 1 つのタプル オブジェクトとして評価され (つまり、アンパックされません)、_queue は 2 番目の引数と見なされます。
コードは、不明な数の引数でさまざまなメソッドを呼び出すスレッドを初期化できる必要がありますが、常に最後に「キュー」パラメーターがあります。
これを達成する方法はありますか?その場合、どのように?そうでない場合は、何が間違っているのでしょうか?
ありがとう。
編集: キューを引数として「init_thread()」メソッドを呼び出すことはオプションではないことを追加する必要があります。これは、コードの残りの部分に、スレッドハンドラーが内部でどのように機能するかを「認識」させたくないためです.. .