2016-06-12 1 views
0

인터넷을 통해 짧은 잠을 포함하여 끝없이 반복되는 클라이언트의 메시지를 기다리는 서비스를 처리하는 몇 가지 예를 보았습니다. 예 :진정한 루프 동안 짧은 수면을 추가하는 시점은 무엇입니까?

while True: 
    check_messages_stack() 
    sleep(0.1) 

수면의 요점은 무엇입니까? 자원을 절약해야합니까? 그것이 약간의 자원을 절약한다면 그것은 의미있는 금액입니까?

+0

문맥과 특성이없는 질문은 실제로 의미가 없습니다. – pvg

+1

CPU 사용량이 적은 경우. 'while True : pass'와'while True : pass; sleep (.1)'while 루프를 실행하면 CPU 사용량에 차이가 생깁니다. –

답변

0

sleep은 CPU 리소스를 사용하지 않지만 계속해서 check_messages_stack()을 실행할 수 있습니다 (사용자가 가지고있는 것에 따라 다름). 따라서 CPU 리소스를 일정하게 유지할 필요가없는 경우 CPU를 끄는 것이 좋습니다.

0

기능이 아무것도 기다리지 않는 경우, 소비 것 100 %의 CPU는 수면을 추가함으로써, CPU를 다른 프로세스

말했다 다른 사람처럼
1

sleep을 실행 시간 CPU 사용량을 이완을 제공합니다 , 또한 네트워크/웹 데이터에 액세스하는 것과 같은 것이라면 호스트 서버를 중단시키지 않고 수면을 방해하는 수면이 필요합니다.

1

PC가 실행되는 동안 CPU가 많은 프로세스를 실행해야합니다 (PC가 실행되도록). CPU가 매우 빠르기 때문에 동시에 여러 작업을 할 수 있지만 실제로는 그렇지 않습니다 (요즘에는 여러 코어 CPU와 mutithreading을 얻지 만이 설명을 잊어 버립니다).
일정한 시간 동안 프로세스의 일부만 실행 한 다음 다른 프로세스의 일부가 처음으로 돌아가는 식으로 계속 진행됩니다.

간단한 방법으로, 프로세스가 실제로 I/O를 수행하거나 사용자 상호 작용을 기다리는 경우와 같이 실제로 실행중인 프로세스가 CPU를 사용하지 않을 때 CPU는 다른 프로세스로 전환 할 수 있습니다.

while true을 실행하면 최대한 빨리 루프되어 while 루프의 기능을 실행합니다. 여기에서 가능한 한 빨리 ASAP을 의미하므로 다른 프로세스가 두 루프 사이에서 아무 것도 할 수 없습니다. CPU가 지속적으로 처리하기 때문입니다.

sleep을 입력하면 CPU가 다른 프로세스를 실행할 수 있습니다. 무작위 CPU가 마이크로 초 안에 수십억 개의 작업을 수행 할 수 있기 때문에 실제로 잠자기 시간이 얼마나 중요한지는 알 수 없습니다.

따라서 귀하의 질문에 sleep(0.1)은 CPU가 두번의 check_messages_stack() 호출 사이에서 somme bilions 작업을 실행할 수있게합니다.

자세한 내용은 "CPU 예약"을 참조하십시오.

관련 문제