파이썬 제어문들 중에 이런 건 없나요?

조회수 409회

제어문 중에서

여러 가지 조건들을 거쳐서 그 조건에 맞게 각 각 명령을 실행하는게

if문 elif문 else 문이잖아요

그런데 조건 하나를 가지고 명령을 실행하는데,

순서에 따라서 실행하는거요

이렇게 보면 매우 간단한데 ,

중간에 조건에 맞지 않으면 거기서 함수를 종료하는 그런 제어문? 같은걸 원하는데요

예를 들면

import time
from threading import Thread

def func1()
     global off
     while off:
        1. 모라모라
        2. 모라모라
        3. 모라모라
        4. 모라모라

t1=Thread(target=func1)
t1.start()

time.sleep(10)
off=0

예를 들어 이런 비스무리한 코드가 있을때요.

10초후에 off의 값이 바뀌잖아요?

그럼 func1 함수는 종료가 되겠죠?

여기서 제가 원하는건 딱 off의 값이 변하는 순간

저 func1 함수의 1번이든 2번이든 중간에 끊기는거요

보통은 4번까지 실행 후에 종료가 되잖아요

이게 노다가로 하나하나 if문으로 지정을 하면되긴하는데

간단한 방법이 있을 거 같아서요

1 답변

  • 간단한 방법이라면 off의 값을 변경하는 대신 쓰레드를 죽이는 방법이 있을 것 같네요.

    다만, 쓰레드는 죽일 수 없기에 위와 같은 경우라면 동일한 동작을 수행하도록 multiprocessing을 사용하였습니다.

    import time
    import multiprocessing
    
    def func1():
         while True:
            print(1)
            print(2)
            print(3)
            print(4)
            print(5)
            print(6)
    
    if __name__ == '__main__':
        multiprocessing.freeze_support()
        t1=multiprocessing.Process(target=func1)
        t1.start()
        time.sleep(1)
        t1.terminate()
    

    감사합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)