일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터분석
- 자바스크립트
- 네트워크보안
- 사이버보안
- Yes
- 알고리즘
- 클라우드컴퓨팅
- 코딩
- 보안
- 딥러닝
- 소프트웨어공학
- 프로그래밍
- 네트워크
- 웹개발
- 파이썬
- 머신러닝
- 컴퓨터비전
- I'm Sorry
- 컴퓨터공학
- 빅데이터
- 컴퓨터과학
- 자료구조
- 인공지능
- 데이터베이스
- 소프트웨어
- 버전관리
- 데이터구조
- 데이터과학
- 프로그래밍언어
- 2
- Today
- Total
스택큐힙리스트
time.sleep -- 스레드 또는 프로세스를 슬립시킵니까? 본문
파이썬에서 *nix에서, time.sleep()는 스레드 또는 프로세스를 차단합니까?
답변 1
이것은 스레드를 차단합니다. Python 소스의 Modules / timemodule.c에서 floatsleep()에 대한 호출에서 휴면 작업의 본질적인 부분이 Py_BEGIN_ALLOW_THREADS 및 Py_END_ALLOW_THREADS 블록으로 래핑되어 현재 스레드가 잠자고있는 동안 다른 스레드가 계속 실행할 수 있도록 합니다. 이를 간단한 Python 프로그램으로도 테스트할 수 있습니다.
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
답변 2
time.sleep -- 스레드 또는 프로세스를 자는 것이 목적인가?time.sleep()은 일시적으로 코드 실행을 지연시키며, 이는 Python에서 스레드 또는 프로세스의 수행을 중단시킵니다. 이 기능은 다중 스레드 및 다중 프로세스 프로그래밍에서 유용합니다. 그러나 이 함수가 스레드 또는 프로세스를 자는 것인지, 또는 둘 다를 자는 것인 지에 대한 의문이 제기됩니다.
이에 대한 답변은, time.sleep() 함수는 스레드 또는 프로세스를 수면 상태로 만드는 것이 아닙니다. 이 함수는 오직 현재 스레드, 즉 코드 실행을 자는 것이 목적입니다. 다시 말해, 이 함수는 현재 스레드가 수행을 잠시 멈추도록 합니다.
따라서, time.sleep()은 스레드 또는 프로세스를 중단시키는 것이 아니기 때문에, 다른 스레드나 프로세스는 계속해서 실행됩니다. 만약 다른 스레드나 프로세스가 아무것도 수행하지 않고 대기하고 있다면, time.sleep() 함수가 호출되면, 이론적으로 시스템의 전반적인 성능이 저하될 수 있습니다.
결론적으로, time.sleep()은 파이썬에서 현재 스레드의 수행을 일시 중지시키는 데 유용한 함수입니다. 이는 다중 스레드 및 다중 프로세스 프로그래밍에서 중요한 역할을 합니다. 그러나 이 함수가 다른 스레드나 프로세스도 함께 수면 상태로 만드는 것은 아니며, 이 부분은 주의해야 합니다.
(단어 수: 237)