[python] time.sleep — 쓰레드 나 프로세스를 슬리핑합니까?

Python for * nix time.sleep()에서 스레드 또는 프로세스를 차단합니까?



답변

스레드를 차단합니다. Python 소스에서 Modules / timemodule.c를 살펴보면을 호출 floatsleep()하면 휴면 작업의 실질적인 부분이 Py_BEGIN_ALLOW_THREADS 및 Py_END_ALLOW_THREADS 블록에 래핑되어 현재 다른 스레드가 현재 실행되는 동안 계속 실행될 수 있음을 알 수 있습니다 하나는 자요. 간단한 파이썬 프로그램으로 이것을 테스트 할 수도 있습니다.

import time
from threading import Thread

class worker(Thread):
    def run(self):
        for x in xrange(0,11):
            print x
            time.sleep(1)

class waiter(Thread):
    def run(self):
        for x in xrange(100,103):
            print x
            time.sleep(5)

def run():
    worker().start()
    waiter().start()

다음과 같이 인쇄됩니다.

>>> thread_test.run()
0
100
>>> 1
2
3
4
5
101
6
7
8
9
10
102


답변

응용 프로그램에 단일 스레드 만있는 경우를 제외하고 스레드를 절전 모드로 전환합니다.이 경우 스레드를 절전 모드로 설정하고 프로세스를 효과적으로 수행합니다.

잠자기 파이썬 문서는 이것을 지정하지 않으므로 혼란을 확실히 이해할 수 있습니다!

http://docs.python.org/2/library/time.html


답변

실만.


답변

스레드가 차단되지만 프로세스는 여전히 활성 상태입니다.

단일 스레드 응용 프로그램에서 이는 잠자는 동안 모든 것이 차단됨을 의미합니다. 멀티 스레드 응용 프로그램에서는 명시 적으로 ‘슬립’하는 스레드 만 차단되고 프로세스 내에서 다른 스레드는 계속 실행됩니다.


답변

프로세스에 단일 스레드가없는 경우 스레드 만


답변

프로세스 자체는 실행할 수 없습니다. 실행과 관련하여 프로세스는 스레드의 컨테이너 일뿐입니다. 프로세스를 일시 중지 할 수 없음을 의미합니다. 단순히 처리 할 수 ​​없습니다.


답변

메인 코드에서 실행되지 않으면 동일한 스레드에서 실행되면 스레드를 차단합니다.