2016-07-20 3 views
0

基本的に私はいつでも停止して再開できるスクリプトを書いています。したがって、ユーザがプログラムを実行するために、例えばPyCharm consoleを使用する場合、彼はいつでも停止ボタンをクリックすることができます。PyChスクリプトがPyCharmコンソールから停止しているときに待機してプロセスを完了しますか?

ここで、いくつかの変数を保存し、終了する前に進行中の関数を終了させる必要があります。これにはどのような機能を使用しますか?

私はすでにatexit.register()を利用していません。 また、プログラムが終了する前に進行中の機能が完了していることを確認するにはどうすればよいですか?事前

答えて

0

おかげで、あなたが信号をキャッチすることがありますように見えます。

OSにシグナルがプロセスに送信されるようにプログラムが指示された場合、それらをキャッチして終了する前にクリーンアップを行うことができます。多くの異なる信号があります。たとえば、CTRL + Cを押すと、OSがSIGINT信号を送信してプロセスを停止しますが、他にも多くの信号があります。

はここを参照してください:信号ライブラリのHow do I capture SIGINT in Python?

、ここで:https://docs.python.org/2/library/signal.html

1

は本当に悪いの回避策を使用して、それを解決しました。私はSIG *関数を含め、Pythonで終了するのに関連するすべての関数を使用しましたが、PyCharmアプリケーションの "Stop"ボタンを押してPythonプログラムを停止しているときに、終了信号を捕まえる方法はありませんでした。最後に、tkinterを使用して空のウィンドウを開き、私のプログラムをバックグラウンドスレッドで実行し、プログラムの実行を終了/停止するための回避策を得ました。すばらしく動作し、atexitを実行するだけでなく、SIG *シグナルをキャッチします。とにかく@scrineymのおかげで、リンクは最終版の開発に役立つ多くの有用な情報を与えてくれました。

関連する問題