강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

gusqhr55님의 프로필 이미지
gusqhr55

작성한 질문수

남박사의 파이썬 기초부터 실전 100% 활용

socketserver를 사용해 채팅 서버/클라이언트 구현하기 (클래스 상속 및 오버라이딩)

while 문 cpu 100..

작성

·

846

1

안녕하세요~ 좋은 강의 잘 듣고 있습니다 

다름이 아니라 while 문으로 서버에 send 값을 계속 받기 위해 recv 하는 구문을 while 반복문으로 했는데....cpu가 100을 칩니다...ㅠㅠ 

일단 제 os 는 윈도우 입니다..ㅠㅠ python 버전은 3.10.2 최신 버전 입니다.. mac에서는 잘되었는데..윈도우에서는 계속 cpu 100을 치네요.. 

while True: 

time.slee(0.2)를 넣어주고 프로그램 실행하면 서버에서 보낸 값을 받고서는 계속 뭔가 실행되듯이 화면이 내려갑니다..ㅠㅠ

 

 

 

퀴즈

네트워크 프로그래밍에서 서버와 클라이언트의 주된 역할 구분은 무엇인가요?

서버는 연결을 시작하고 클라이언트는 대기한다

서버는 서비스를 제공하고 클라이언트는 대기한다

클라이언트는 연결을 시작하고 서버는 대기한다

클라이언트와 서버 모두 연결을 시작할 수 있다

답변 1

0

남박사님의 프로필 이미지
남박사
지식공유자

컴퓨터 사양이 어떠시길래 time.sleep(0.1) 에서 cpu 100%를 점유하는지 이해가 가질 않습니다.

컴퓨터 사양이 엄청 낮거나, 가상환경이거나 그런 외부적 요소 때문인걸로 보입니다만...(혹시 가상 환경이신가요????) 

일반적인 i5 급 이상에서도 time.sleep(0.1) 에서 cpu 점유율이 100%를 친다면 뭔가 문제가 있어 보입니다.

(파이썬 자체로 그렇게 cpu를 점유하기가 쉽지 않고 0.1 초가 cpu 입장에서는 엄청 긴 시간입니다.)

 

위의 코드를 무시하고

그냥 단순히

a = 0
while True:
    print(a+1)
    time.sleep(0.1)

 

위와 같은 코드를 작성하시어  time.sleep() 값을 조금씩 늘려보시면서 테스트 해보시기 바랍니다.

그리고 위 코드가 동작중이지 않을때 Idle 상태일때의 점유율도 체크해보시기 바랍니다.

만약 가상환경인데 저 정도라면 아마도 윈도우에서 가상을 돌리시는게 아닐꺼라 판단됩니다만...

그렇다면 그냥 맥이던 리눅스던 그 환경에서 작업하시는게 좋을꺼라 판단됩니다.

(특히 맥에서의 가상환경은 윈도우에서의 가상환경과는 완전 다른 퍼포먼스를 보입니다.

윈도우 전용 프로그램인 경우만 코드를 이해하시는 정도로 테스트 하시는게 좋을것 같습니다.)

 

더 궁금하시거나 해결되지 않으시면 다시 질문 주시기 바랍니다.

(질문에 많은 정보를 주시면 제가 상상하는데 도움이 많이 됩니다. ^^;)

gusqhr55님의 프로필 이미지
gusqhr55

작성한 질문수

질문하기