gevent を使用して非同期で作業を行うライブラリを作成しています。メインモジュールの実行が終わっても作業が完了することを保証したい。
class separate_library(object):
def __init__(self):
import gevent.monkey; gevent.monkey.patch_all()
def do_work(self):
from gevent import spawn
spawn(self._do)
def _do(self):
from gevent import sleep
sleep(1)
print 'Done!'
if __name__ == '__main__':
lib = separate_library()
lib.do_work()
これを実行すると、プログラムがすぐに終了し、Done!
印刷されないことがわかります。
separate_library
現在、メイン モジュールは実際に作業をどのように達成するか (またはそれが使用されているか) を認識していないか、気にしていないgevent
ため、そこに参加する必要があるのは不合理です。
separate_library
特定のタイプのプログラムの終了を検出し、作業が完了するまで停止する方法はありますか? キーボード割り込み、SIGINT は、sys.exit()
おそらく予期される動作であるため、すぐにプログラムを終了する必要があります。
ありがとう!