閉じる前に、アクティブなコンテキストマネージャが適切に__exit__関数を呼び出すように、Pythonプロセスを停止するにはどうすればよいですか?コンテキストマネージャがまだ__exit__(ウィンドウ内)を呼び出すように、Pythonプロセスを停止する
私はコンテキストマネージャ(__enter __()と__exit __())を使用して、光ハードウェアへの接続を確実かつ安全に閉じます。これはすごくうまくいっていますが、私たちは今何時間も実行するルーチンを実行し始めています。多くの場合、バグが発生した直後に気づき、むしろプロセスを短くすることにします。
実行中のプロセスを「停止」できるPyCharmからコードを実行しています。これは、私がデバッグ中であれ、実行中であれ、プロセスを即座に終了させるようです。 __exit__関数は呼び出されていないようです。
また、ハードウェアを制御するコンピュータが何らかの形で再生を開始すると、ウィンドウが実行されます。 ***
***実際に遊ぶようになります。 Macosxはウィンドウが表示されていない間はexit関数を呼び出すようです。私はPyCharmからこのコードを実行すると、それは睡眠文でありながら、私はpycharmで停止ボタンを押して
from abc import *
import time
class Test(object):
__metaclass__ = ABCMeta
def __init__(self, *args, **kwargs):
print("Init called.")
def __enter__(self, *args, **kwargs):
print("enter called")
def __exit__(self, type, value, traceback):
print("Exit called")
with Test() as t:
time.sleep(100)
print("Should never get here.")
:
は、私は基本的なテストを書くことにしました。MacOSXの:
Init called.
enter called
Exit called
Traceback (most recent call last):
File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 1591, in <module>
globals = debugger.run(setup['file'], None, None, is_module)
File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 1018, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/Users/.../Library/Preferences/PyCharmCE2017.1/scratches/scratch_25.py", line 22, in <module>
time.sleep(100)
KeyboardInterrupt
のWindows
Init called.
enter called
Process finished with exit code 1
それは、コマンドプロンプトから実行していた場合はControl-Cは、働くだろう。 – jasonharper
私は現在、PyCharmから実行していますが、何らかの端末を起動できると思っています。 – Batman0730
オペレーティングシステムとPythonのバージョンは何ですか? – phd