私は、taskqに追加された各タスクが実行中で、何かを計算している、例えば30秒というかなり単純なプログラムを持っています。このタスクはwhileやforのループで実行されていません。Python - 長時間実行されているtaskqのスレッドを停止する
def run(self):
while not self.stopper.is_set():
DO_MY_30_SECONDS_WORK(self)
self.task_done()
ここで、私はthread.eventを持っていると仮定し、これはタスクが完了する前/後にチェックすることができます。しかし、すでに実行中のスレッドに実行を停止または終了するよう指示する方法があります。
私はあなたの昨年のような問題を抱えていて、問題を処理するためにSIGNALを使用しました。メインスレッドで別のスレッドを開始し、ヘルパースレッドでタイムカウンタを開始することができます。カウンタが終了すると、メインスレッドにシグナルが与えられ、シグナルを受け取ることによってシグナルが消滅します。あなたは[this](https://pymotw.com/2/signal/)を見たいかもしれません。 – cengineer
はあなたの仕事のいくつかのpythonコードですか、それとも 'subprocess'を使って実行する別のプログラムですか? – hansaplast
これはちょうどpythonコードですが、おそらくCurl呼び出しを使用しています。 – Jay