서버 측 스크립팅을위한 Python 인터프리터를 포함하는 HTTP 서버 (C++에서는 홈 메이드)를 실행하고 있습니다. 이것은 포크 서버이지만 부모 프로세스에서 스레딩을 사용하지 않습니다. 나는 파이썬 인터프리터 (포크 제외)로 이상한 일을하지 않는다.Python time.sleep이 훨씬 오래 걸림
그러나 스크립트 중 하나에서 다른 스레드에서는 time.sleep(0.1)
에 대한 호출이 최대 1 분, 특히 첫 번째 호출까지 걸릴 수 있습니다.
while not self.should_stop():
# other code
print "[PYTHON]: Sleeping"
time.sleep(0.1)
print "[PYTHON]: Slept, checking should_stop"
나는이 훨씬 나중에, 더 로그가 첫 번째 인쇄를 표시하기 때문에, 매달려, 두 번째 어디에 것을 알고있다.
추가 정보 : CPU가 불렀고되지
- (~ 5 %)
- 이 이러한
threading
스레드입니다 우분투 - 에 파이썬 2.7이다; 필요한 경우 잠금 장치 및 이벤트를 사용합니다.
- 포크를 수행하는 모든 프로세스에서
threading
을 가져 오지 않습니다. - 포크 전에 파이썬이 초기화됩니다. 이 때문에 하나 개의 스레드 수 많은 스레드가있는 경우 지속적으로 그들 사이를 전환 할 수, 인터프리터가있다, 그래서 이
안녕하세요! 죄송합니다. 근원을 제공해 주시겠습니까? 전에 이런 말을 들어 본 적이 없습니다. 감사! 편집 : 또한 2 개의 스레드 만 있는데 왜 그 중 하나가 정지합니까? –
1 초 30 분을 기다리는 시간은 글로벌 인터프리터 잠금을 사용하는 경우에도 치명적인 스레드 예약 결함 일 수 있습니다. – user2357112
@ user2357112, 나는 그것이 '과장'이 꽤 두드러 질 수 있다는 것을 보여주는 것이 과장이라는 것은 꽤 분명해야한다고 생각했습니다. – ForceBru