Programming

time.sleep — 스레드 또는 프로세스를 잠급니다?

procodes 2020. 3. 2. 13:17
반응형

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


실만.


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

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


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


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

참고 URL : https://stackoverflow.com/questions/92928/time-sleep-sleeps-thread-or-process



반응형