誰かが、このスレッドコードがクラスのメソッドを呼び出すのが完了しなかった理由を明かにしてもらえますか?Pythonスレッドキューでクラスメソッドを呼び出す
from Queue import Queue
from threading import Thread
class SimpleThing(object):
def __init__(self, name):
self.name = name
def print_name(self):
print self.name
class ThingSpawner(object):
def __init__(self, name_list):
self.things = [SimpleThing(name) for name in name_list]
self.thread_queue = Queue()
def run(self):
for thing in self.things:
t = Thread(target=thing.print_name, name=thing.name)
t.daemon = True
t.start()
self.thread_queue.put(t)
self.thread_queue.join()
thing_list = ['cat', 'dog', 'llama', 'bat']
sp = ThingSpawner(thing_list)
sp.run()
コードは明らかにprint_name
メソッドを実行しますが、join()
と出ないだろう。
join()
が完了するようにこのコードを修正する最も簡単な方法は何ですか?モチベーションは、既存のPythonコントロールクラスをハードウェアの一部として使用し、コントロールクラスの(非常に遅い)メソッドを並行して呼び出すことができます。ありがとう!