파이썬 스크립트에서 파일 잠금을 사용하고 있습니다 (실행의 단일 인스턴스를 제어하기 위해). http://code.google.com/p/pylockfile/ 마지막으로 코드 블록에서 잠금을 해제합니다. 그러나 스크립트가 닫힌 경우 (예 : 실행중인 터미널 닫기) finally 블록이 실행되지 않고 파일이 잠긴 상태로 유지됩니다.스크립트에서 언로드 이벤트 (소멸자)
어쨌든 python 스크립트 소멸자 이벤트를 잡는 방법은 무엇입니까?
파이썬 스크립트에서 파일 잠금을 사용하고 있습니다 (실행의 단일 인스턴스를 제어하기 위해). http://code.google.com/p/pylockfile/ 마지막으로 코드 블록에서 잠금을 해제합니다. 그러나 스크립트가 닫힌 경우 (예 : 실행중인 터미널 닫기) finally 블록이 실행되지 않고 파일이 잠긴 상태로 유지됩니다.스크립트에서 언로드 이벤트 (소멸자)
어쨌든 python 스크립트 소멸자 이벤트를 잡는 방법은 무엇입니까?
이 주제와 관련하여 this blog post을 참조하십시오. Windows에서는 win32api를 사용하고 Linux에서는 SIGTERM
신호가 감지됩니다. 작동 여부를 확인하려면 다음과 같이 on_exit
처리기의 파일에 무엇인가를 작성하는 것이 좋습니다. 코드 조각은 아주 간단한이기 때문에, 난 그냥 (블로그 작성자에 대한 모든 소품)이 포함됩니다 : 당신이 그 프로그램을 실행하는 터미널을 닫을 경우
import os, sys
def set_exit_handler(func):
if os.name == "nt":
try:
import win32api
win32api.SetConsoleCtrlHandler(func, True)
except ImportError:
version = '.'.join(map(str, sys.version_info[:2]))
raise Exception('pywin32 not installed for Python ' + version)
else:
import signal
signal.signal(signal.SIGTERM, func)
if __name__ == '__main__':
def on_exit(sig, func=None):
f = open('log.txt', 'w')
f.write('shutdown...')
f.close()
sys.exit()
set_exit_handler(on_exit)
print 'Press to quit'
raw_input()
print 'quit!'
를, 그것은 콜백 기능을 확인하기 위해 파일을 만듭니다.