2014-02-22 2 views
1

파이썬 스레드가 시작되었는지 확인하는 방법은 무엇입니까? 방법은 is_alive()이지만 이것은 보다 앞에이고, 인데 스레드가 실행 중입니다.스레드가 시작되었는지 확인하십시오.

+0

'반환 자기 .__ started.is_set()가 아니라 자기 .__ stopped' 전에 ​​시작 false를 반환해야합니다. '메서드 시작 바로 전에'doc str에서 다음 '__started' 설정되어 있지만 스레드가 아직 실행되고 있지 않습니다 (내 생각은 매우 짧은 시간) – ndpu

답변

0

시작할 때 부울 플래그를 설정하고 해당 플래그를 확인할 수 있습니다.

+0

그건 내가 원하는 것만은 아닙니다. 스레드가 시작될 때와 실행될 때 사이에는 항상 지연이 있습니다. 나는이 결함을 피하고 싶다. 가능성은'Thread.start'를 오버로드하여 플래그를 설정하는 것입니다. – Razer

+2

@Razer 일반적으로 스레드가 시작될 때와 실제로 실행될 때 사이의 지연을 피할 수는 없으며 그런 일에 의존하는 모든 디자인은 정의에 따라 끊어집니다. 어쨌든, 당신은 정말 그런 깃발이 필요하지 않아야합니다 - 당신이 해결하려고하는 실제 문제는 무엇입니까? – Voo

4

ident 필드를 스레드 인스턴스로 볼 수 있습니다. 스레드 가 시작되어 있지 않은 경우는 Python 2.7 documentation for Threading

스레드 또는 유료의 "스레드 식별자"로 식별자 설명한다.

1

사용 isAlive (또는 is_alive) Thread 클래스 방법.

소스 http://hg.python.org/cpython/file/2.7/Lib/threading.py#l995에서

:

# ... 
def isAlive(self): 
    """Return whether the thread is alive. 

    This method returns True just before the run() method starts until just 
    after the run() method terminates. The module function enumerate() 
    returns a list of all alive threads. 

    """ 
    assert self.__initialized, "Thread.__init__() not called" 
    return self.__started.is_set() and not self.__stopped 

# ... 
관련 문제