모듈의 함수는 클래스의 정적 메서드와 같습니다. 스레드 안전성 문제는 여러 스레드가 공유 데이터를 수정하거나 하나의 스레드가 다른 스레드가 읽는 동안 그러한 데이터를 수정하는 경우 발생할 수 있습니다. 데이터를 다른 모듈의 Queue.Queue를 통해 액세스 할 수있는 ONE 모듈이 소유하도록하는 것이 가장 좋습니다.하지만 불가능할 경우 잠금 및 기타보다 복잡한 동기화 프리미티브에 의존해야합니다.
이것은 공유 데이터에 대한 액세스가 모듈 함수, 정적 메서드 또는 인스턴스 메서드에서 발생하는지 여부에 관계없이 적용되며 인스턴스 변수, 클래스 또는 전역 변수와 같은 공유 데이터입니다 (범위 지정 및 스레드 안전성은 본질적으로 서로 다릅니다. 함수 로컬 데이터는 본질적으로 스레드 안전합니다. 함수가 공유 컨테이너를 통해 의도적으로 "공유"할 때까지 다른 스레드는 함수 인스턴스 내부의 데이터를 볼 수 없습니다.
threading
모듈 대신 파이썬의 표준 라이브러리에서 multiprocessing
모듈을 사용하는 경우 "스레드 안전성"에 신경 쓸 필요가 없습니다. 기본적으로 프로세스간에 데이터가 공유되지 않기 때문에 ... 당신은 그것을 바꾸기 위해 길을 떠나야합니다. mmap
ped 파일을 통해 ;-).
prefork MPM을 사용할 필요가 없습니다. mod_wsgi 데몬 모드를 사용할 수 있습니다. 이 경우에도 작업자 MPM을 프로세스의 수로 사용할 수 있으며 mod_wsgi 데몬 모드에서 사용하는 스레드는 별도로 제어됩니다. prefork의 사용은 mod_python이나 mod_wsgi의 임베디드 모드에서만 필요합니다. –