私はアプリケーションにデコレータを使ってスレッドを実装しようとしていますが、ロックやスレッドの管理については理解できません。 デコレータ付きスレッド
私が理解したよう
は、法1と方法2が同期されていないが、その原料の同期は、ロックの助けを借りて実現しています。デコレータ機能にロックを追加する方法は?import threading def run_in_thread(fn): def run(*k, **kw): t = threading.Thread(target=fn, args=k, kwargs=kw) t.start() return run class A: @run_in_thread def method1(self): for x in range(10000): print x @run_in_thread def method2(self): for y in list('wlkefjwfejwiefwhfwfkjshkjadgfjhkewgfjwjefjwe'): print y def stop_thread(self): pass c = A() c.method1() c.method2()
デコレータを使用して長いスレッドを停止する方法をどうすれば実現できますか?
2つのスレッド間で何を同期しますか? – awatts
私は何かが間違っているかもしれません。 場合によっては(常にではありませんが)1つのスレッドの後に2つ目のスレッドを並列に実行する可能性があります。 –
これを行う簡単な方法は、その場合にスレッド内でコードを実行しないことです。どちらの場合も、2つの同様のメソッドを持つことができます.1つはスレッド内でタスクを行い、もう1つはスレッドでは行いません。あるいは、呼び出しがスレッド化されるかどうかを示す呼び出し時にパラメータを渡します。 – awatts