2009-05-01 6 views
9

나는 X 초 이상 동안 활성화되어 있다면 스레드를 죽일 수있는 좋은 타임 아웃 스크립트를 찾고 있었지만 모든 예제는 항상 멈추지 않는 결함이있다. 실. thread.join (x)를 사용하면 스레드의 목적을 무력화시킵니다.파이썬 타임 아웃

내가 찾은 유일한 괜찮은 예 Timeout on a function call이고 하나 .. 그 결함없이 아니라고

사람이 할 수있는 더 좋은 방법을 알고?

+0

파이썬 사람들은 일반적으로 공유 메모리에 쓰고있는 것을 죽이는 것은 좋지 않기 때문에 이것을 열심히했습니다. 스레드 대신 프로세스를 사용할 수 있습니까? – Dave

+0

글쎄,이 경우에는 mod_wsgi 스크립트를 사용하기 때문에 종료 처리가 더 필요하다. 스크립트가 제한 시간을 지나면 전체 스레드를 종료하고 종료하므로 잠재적으로 공유 메모리를 손상시키는 것은 큰 문제는 아닙니다. – Ian

+0

데몬 모드 또는 임베디드 모드로 실행 중이십니까? – Dave

답변

0

나는 이것이 당신이 원하는 것이 아닐지 모르지만 신호 접근법을 고려 했습니까? Timeout on a function call http://docs.python.org/library/signal.html#example

당신은 스레드 실행의 시작 부분에 경보 신호를 설정 한 다음 신호 처리기에서 스레드를 중지 할 수 있습니다.

+0

>이 모듈은 스레드와 잘 작동하지 않습니다 (하지만 누가 그렇습니까?). – Dave