pyrhon 반복문 오류 개념적인 질문입니다.

조회수 2375회
  1. 반복문을 실행시켰을 때 멈추지 않고 영원히 작동 시킬 수 있는 방법이 궁금합니다.
  2. 보통 루프문을 장시간 켜놨을 때 발생하는 일반적인 오류는 어떤게 있는지 궁금합니다.
  3. 또, 그런 오류가 발생했을 때 어떤 방법으로 해결할 수 있는지 궁금합니다.
  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

    • 예 이론적으로는 영원히 돌릴수는 있지만, 컴퓨터 성능의 한계가 있고, 정전, 운영체제 업데이트, 혹은 다양한 오류등으로 영원히 돌리고 싶어도 돌릴수가 없습니다.

    • 하지만 예외가 있습니다. 대형 전산실의 서버나, 아마존 aws (클라우드 서비스), facebook, google, 같은 곳에서는 서버를 거의 영구적으로 돌려야 하기 때문에 서버관리를 굉장히 많은 돈과 노력을 들여서 관리합니다. 하지만 대형 서버실이나 데이터 센터의 컴퓨터도 컴퓨터의 한계로 언젠가는 작동을 멈추어야만 하겠죠. 하지만, 일반적인 컴퓨터들 보다는 수명이 오래가지 않을까요? (관리를 열심히 하니...)

    • 루프문을 장시간 켜놨을때 일반적인 오류는 어떤게있는지는 그 프로그램의 구조를 알아야 짐작할수 있지 않을 까요?

    while True:
        print("Hello World")
    

    라는 프로그램이 있다고 가정합시다.

    이녀석은 별다른 기능이 없기에 그냥 묵묵하게 기능을 수행하므로 대표적인 오류가 있다고해도 뭐 프로세스가 갑자기 죽어버리는 오류같은거 등등.... 별거아닌 오류들만 있겠지만,

    만약에 멀티스레딩을 쓰거나, 웹서버를 돌리거나, .... 기타등등

    의 프로그램(기능)들을 돌린다면 다른 오류들도 생기겠죠.

    이내용은 쉽게 정의 할 수 없는 내용인것 같네요.

    • 또 그런 오류가 발생했을때 어떤 방법으로 해결 할 수 있는지 궁금합니다. 이것도 위에 있는 답변과 마찬가지로, 프로그램마다 다릅니다 우리가 어떤 프로그램(이나 기능)을 사용하는 지에 따라서 생길수 있는 오류의 종류나 경우도 다양해 지겠죠.
    
    x = 0
    
    while True:
        if x == 100:
            break
    
        else:
            x = x + 1
    
    print(x)
    

    영원히 반복문(무한루프)를 작동시킬수는 있지만, 그럴 경우는 드뭅니다. 언젠가는 결과를 받아야 합니다.

    그래서 보통 무한루프를 돌리되 조건을 걸어서 어느 순간에

    멈추도록 기능을 만듭니다. 위에 코드 같이요.

    코드는 https://github.com/proogrammer/MyAnswers/blob/master/python/loop.py 에 있습니다.

    :)

  • 운영체제와 어셈블리를 공부해보면 많은 도움이 됩니다.

    운영체제(x86) 입장에서 프로세서(프로그램)은 독립적인 4기가 공간을 갖은 가상공간입니다.

    각각의 프로세서는 격리되어 있고 서로의 영역을 침범할 수 없죠. 즉 무한반복을 수행하면 계속 수행되는 겁니다. 운영체제는 계속 해당 프로세서의 우선순위를 고려해 cpu사용시간을 배분합니다.

    수행중 문제가 발생하면 현대의 운영체제는 대부분 선점형이므로 해당 프로세스만 종료시킬 수 있습니다.

    파이썬도 결국 기계어(어셈블리어)로 컴파일(변환)되어 수행합니다.

    if 같은 조건문은 cmp, jmp 로 변환되며 for, while 같은 반복문 또한 ecx 레지스터와 rep, jmp 등으로 변환됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)