2011-01-25 6 views
6

저는 서버에 많은 TCP 연결을 만드는 멀티 스레드 Python 응용 프로그램을 작성하고 있습니다. 각 연결은 별도의 스레드에서 수행됩니다. 때로는 스레드가 오랫동안 멈추는 경우가 있습니다. 주어진 시간이 지나면 쓰레드가 스스로를 죽이게하려면 어떻게해야합니까? 주 스레드에서 자식 스레드가 스스로를 죽인 것으로 어떻게 결정할 수 있습니까?파이썬 : 타임 아웃 후에 스레드를 죽일 수있는 방법은 무엇입니까?

가능한 경우이 작업을 수행하는 방법을 보여주는 코드 스 니펫에 감사드립니다. 감사.

업데이트 시스템은 우분투 9시 10분입니다

+0

중단으로 무엇을 의미합니까? 네트워크 작업이 중단되면 시간 초과를 설정할 수 없습니까? –

+0

예 네트워크 시간 제한을 설정할 수 있지만 다른 문제가 발생합니다. 어제부터 내 질문을 참조하십시오. 시간 초과가없는이 메소드는 대부분의 호스트에서 잘 작동합니다. 나는 스레드 자체를 죽이는 방법을 알고 싶다. – VacuumTube

+0

스레딩에 대해 읽으십시오. "지정된 간격이 지나면 함수를 실행하는 스레드" http://docs.python.org/library/threading.html#timer-objects. 예 : 스레드를 닫는 함수를 호출하여 타이머를 만들 수 있습니까? –

답변

4

짧은 답변 : 그냥 데프 런() 말을합니다. 그래서 소켓에서 데이터를 기다리는 중이라면 시간 초과와 함께 처리하십시오. 그러면 시간 초과가 발생하면 중단해야하며 스레드가 종료됩니다.

스레드가 isAlive() 메소드로 활성화되어 있는지 메인 스레드에서 확인할 수 있습니다.

+0

이 작업은 실제로이 작업을 수행하는 유일한 방법입니다. – Arafangion

관련 문제