Python 스크립트가 실행되는 동안 수정하면 어떻게됩니까?


219

실행하는 데 시간이 오래 걸리는 파이썬 스크립트를 상상해보십시오. 실행 중에 스크립트를 수정하면 어떻게됩니까? 결과가 다릅니 까?


8
프로그램이 메인 메모리에로드됩니다. 소스 파일을 변경해도 아무런 변화가 없습니다. CPU가 하드 드라이브에서 명령어를 읽을 것이라고 상상해보십시오.
Felix Kling

15
@Felix : "Execute-in-Place"(XIP)라고합니다.
Ignacio Vazquez-Abrams

@ 이그나시오 : 흥미 롭습니다. 감사합니다 :)
Felix Kling

3
모듈 코드를 동적으로 다시로드 할 수 있습니다. stackoverflow.com/questions/437589/…
Iliyan Bobev

2
Windows 배치 파일 제자리에서 실행되므로 가상의 질문은 아니며 이러한 방식으로 작동하는 언어가 있습니다.
yoyo

답변:


259

파이썬은 스크립트를 PYC 파일로 미리 컴파일하여 실행하기 때문에 아무것도 아닙니다.

그러나 어떤 종류의 예외가 발생하면 X 행 이 스크립트를 시작하기 전과 다른 코드를 가질 수 있으므로 약간 잘못된 설명이 표시 될 수 있습니다.


10
반드시 파일로 들어올 필요는 없습니다.
Ignacio Vazquez-Abrams

60
그러나 새로운 pyc 파일이 이전 파일을 덮어 쓸 때 실행 중에 다시 시작하면 이미 실행중인 프로그램에서 문제가 발생합니까?
감속 캐비어

26
아무 반응이 없습니다. 또한 작은 테스트로 확인했습니다. 결과 : pyc는 컴파일 된 것입니다. 그리고이 컴파일은 RAM에로드 된 다음 실행됩니다. 따라서 항상 다른 콘솔에서 프로그램을 변경하고 다시 컴파일하고 다른 인스턴스를 실행할 수 있습니다.
Chris

7
@Chris 하나의 콘솔에서 파이썬 스크립트 인스턴스를 시작했습니다. 그것이 실행되는 동안 두 줄의 코드를 변경하고 별도의 콘솔에서 다른 인스턴스를 시작했습니다. 잠시 후, 첫 번째 콘솔에서 시작한 후 변경 한 두 줄의 코드에 대한 오류가 반환되었습니다! pls 도움말
double_j

14
@Chris 여기에서 무슨 일이 일어나는지 알 것 같습니다. 스크립트를 수정하고 실행하는 동안 저장하고 이전 버전 오류가있는 경우 역 추적 판독 값에서 스크립트는 파일의 현재 버전을 열어서 시작했을 때와 다르게 표시되도록합니다. 나는 여러 번 이것을 직접 보았다.
double_j
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.