파이썬 멀티스레딩 질문

조회수 336회

파이썬에서 멀티스레딩을 구현하려고하는데

t_0의 스레드가 함수에 진입했을때 while 1 에서 계속해서 잡혀있는 상태에서 그 다음 t_1 스레드를 실행시키는 코드로 넘어가지 않습니다.

실행 시킬 때 첫번재 스레드가 종료되지 않으면 다음 스레드는 실행되지 않는 것인가요?

def a():
    _compare()

def b():
    _refresh()

if __name__ == '__main__':
    t_0 = threading.Thread(target=a(), name='t0', deamon=True)
    t_1 = threading.Thread(target=b(), name='t1' , deamon=True)

def _compare():
    fCount = _totalCount()    #비교대상
    try:
        while 1:
            cCount = _totalCount()
            if fCount == cCount: 
                time.sleep(10)    #비교해서 같으면 10초 대기
            elif fCount < cCount:
                _printChange(cCount)
                fCount = cCount
                time.sleep(10)
            else:
                _compare()
                time.sleep(10)
    except:
        Alarm._exceptAlarm()
  • 동시 작업을 원하는 거라면 멀티스레드가 아니라 멀티프로세싱을 사용하는게 더 좋습니다. 초보자 2023.3.8 10:08
  • 파이썬에서 동시 작업은 멀티쓰레드도 문제 없습니다. 병렬 작업시 GIL이 문제가 되니 멀티 프로레스를 활용하는 편이 낫습니다. 그리고 target에는 함수 포인터를 넘겨야하는데 a() 이렇게 호출을 했기에 a함수가 수행되는 문제가 있는 겁니다. 정영훈 2023.3.8 14:26

1 답변

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

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

(ಠ_ಠ)
(ಠ‿ಠ)