3

posix 및 일반 기술 소프트웨어 개발의 의미. 순전히 파이썬 (cython 또는 c 컴파일 라이브러리가 아닌) 모듈 import이 동적 연결을 구성합니까?파이썬의 가져 오기가 동적 연결로 간주됩니까?

+0

또한 [LGPL] (https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License)과 관련하여 동적 연결로 간주됩니까? 나는 그것이 될 것이라고 믿지만, IANAL. –

+0

"동적 연결"의 정의에 따라 예와 아니오가 있습니다. 일반적인 의미에서 ** no **, 동적 링크는 스크립트가 아닌 컴파일 된 프로그램 (예 : ELF 실행 파일) 연결에 관한 것입니다. – Bakuriu

+0

나는 LGPL이 C 스타일 연결 또는 완전히 다른 것을 의미하는지 여부에 대한 논쟁이있을 것이라 확신하기 때문에 그다지 관심이 없다. –

답변

4

아니요, 순수 Python 모듈을로드하는 것은 동적 링크 양식으로 간주되지 않습니다.

메모리의 새로운 덩어리로 기존의 동적 링크로드 머신 코드, 다중 실행 프로세스 (동적 링크 라이브러리는 되면 가상 메모리가 나머지를 돌봐로드해야) 액세스 권한을 부여 할 수 있습니다. 링커는 런타임에 실행 파일과 동적 라이브러리를 연결합니다.

반면에 파이썬 모듈을 로딩하면 모듈의 바이트 코드가 파이썬 프로세스 자체로로드됩니다 (현재로서는 바이트 코드 캐시를 사용할 수없는 경우 Python이 소스 코드를 컴파일합니다). 로드 된 모듈은 프로세스간에이 공유되지 않은 입니다. 번역 할 필요가없는 바이트 코드를 실행하면 파이썬 힙에 인터프리터의 모든 기존 코드가 상호 작용할 수있는 새로운 객체가 생성됩니다.

별도의 메모리가 없으므로 별도의 메모리가 필요하지 않습니다. 모듈은 별도의 메모리 섹션이 없으므로 모듈은 파이썬 프로세스 메모리의 일부입니다.