0

時間を節約するために2つの異なるメソッドを同時に呼び出す必要があり、それらのメソッドから取得した結果を使用して別のメソッドを呼び出す必要があるため、twisted.internet.threads の deferToThread メソッドに出くわしました。これは遅延オブジェクトを返し、コールバックをアタッチできるようにしますメソッド。

これが私のコードです

for key,val in result.items():
    d=threads.deferToThread(myMethod1,key,val)
    d1=threads.deferToThread(myMethod2,key)
    d.addCallback(myMethod3)
    d1.addCallback(myMethod4)

reactor.run()

与えられたコードでは、結果は辞書です。myMethod1 と myMethod2 は、非同期で実行する必要がある 2 つのメソッドです。

私の理解によると、deferToThread は、辞書内の各項目に対して特定のメソッドを実行するための個別のスレッドを作成します。そのため、ループが繰り返されるたびに、2 つの異なるスレッドが作成されます。それはいいです。しかし、修正間隔の後にこのコードを継続的に実行する必要があります。修正間隔の後に実行しようとしましたが、16〜17回実行した後、すべてが機能しなくなりました。多くのスレッドがバックグラウンドで実行されているということですか?? 多くのスレッドが実行されている場合、それらのスレッドを停止または強制終了する方法は?

4

1 に答える 1