반응형
Python/Python - 스레드&프로세스2025. 2. 2. 11:05Condition을 사용하여 스레드가 번갈아 가며 실행하는 Python 예제 코드

Condition을 사용하여 두 개의 스레드가 번갈아 가며 실행하는 Python 예제 코드를 작성하기 위해 Claude 3.5 sonet과 ChatGPT 무료버전에게 질문해본 것을 정리했습니다.  글을 다 작성하고 나서 다시 읽어보니 똑같이 유료 버전의 모델을 사용해야 더 정확하지 않을까 싶네요2025. 2. 2  최초작성클로드와 쳇지피티에게 번갈아가며 물어본 결과 쓰레드 동기화를 AI도 어려워하는 구나 싶네요. 서로 상대방의 코드가 문제 있다고 얘기를 반복하며 수정하다가 최종적으로 쳇지피티가 수정한 코드를 클로드가 그렇게 작성해도 된다고 인정했어요. 마지막 쯤에 서로 주장을  반복하던 때에 답변 얻은 결과만 공유합니다. Claude 3.5 sonet notify_all()보다는 notify()가 더 적..

Python/Python - 스레드&프로세스2024. 3. 17. 13:37Python Thread / Process 강제로 종료시키기

Python에서 Thread/Process를 강제로 종료시키는 방법을 다루고 있습니다. 일반적으로 스레드나 프로세스를 갑자기 종료하는 것은 좋은 방법이 아닙니다. 왜냐하면 스레드/프로세스가 자원을 사용하던 중에 갑자기 종료되면 자원 해제 처리가 제대로 이루어질 수 없기 때문입니다. 스레드/프로세스를 강제 종료해도 자원 해제나 기타 다른 문제가 생길 가능성이 없다면 사용해볼 여지가 있습니다. 본 포스트는 참고한 글을 기반으로 작성되었지만 대부분의 코드와 글이 원문과 차이가 있습니다. 원문에 있던 예외와 trace 관련 방법은 제외했습니다. 중지 플래그 - 전역변수 중지 플래그 - 이벤트 객체 Using traces to kill threads : 스레드 대신 프로세스 사용 데몬(daemon) 참고 2024..

Python Thread  예제
Python/Python - 스레드&프로세스2023. 10. 21. 17:30Python Thread 예제

파이썬에서 스레드를 사용하는 방법을 다루고 있습니다. 1. 쓰레드 (Thread) 2. 스레드 생성 및 실행 3. join 함수 4. 데몬 쓰레드 5. Concurrent.futures 모듈 6. 전역 변수 공유 7. GIL(Global Interpreter Lock) 8. 프로세스 생성하여 실행하기 9. Thread vs Process 2022. 8. 6 최초작성 1. 쓰레드 (Thread) 파이썬 코드를 실행하면 보통 위에서 아래로 순차적으로 실행됩니다. 때로는 함수나 조건문, 반복문등에 의해서 실행 순서가 바뀔 수도 있습니다. 하나의 작업이 오래 걸리는 작업이라면 이 작업을 백그라운드로 실행해두고 결과가 리턴되기 전까지 다른 작업을 하고 싶을 수 있습니다. 이렇게 하려면 코드를 병렬로 실행해야 하며..

Python/Python - 스레드&프로세스2023. 10. 14. 07:57스레드가 죽었는지 확인하는 Python 예제 코드

스레드가 종료되거나 죽었다면 다시 스레드를 실행시켜주는 파이썬 예제 코드입니다. 2023. 1. 28 최초작성 참고 https://blog.naver.com/ytlee64/222832101970 import threading def func(): for i in range(5): print(f'##### thread print {i}') print('##### thread exit #####') t = threading.Thread(target=func) t.start() # 스레드 재시작을 2번 반복합니다. try_num = 2 while True: if try_num == 0: break # 스레드가 살아있는지 체크 if t!=None and t.is_alive(): #print('thread ali..

Python/Python - 스레드&프로세스2023. 10. 12. 20:52Python에서 자식 Process 죽었는지 확인하는 예제 코드

Python에서 자식 Process 죽었는지 확인하는 예제 코드입니다. 2022.12.31 최초작성 from time import sleep from multiprocessing import Process import subprocess import os # 자식 프로세스가 부모 프로세스보다 먼저 종료되도록 함 def task(): for i in range(3): print('child process print', i) sleep(1) print('child process exit') if __name__ == '__main__': child = Process(target=task) child.start() parent_pid = os.getpid() print('parent process pid = ..

Python/Python - 스레드&프로세스2023. 10. 12. 20:50Python에서 자식 Process ID 확인하는 예제 코드

Python에서 자식 Process ID 확인하는 예제 코드입니다. 2022.12.31 최초작성 from time import sleep from multiprocessing import Process import subprocess import os def task(): for i in range(5): sleep(1) if __name__ == '__main__': child = Process(target=task) child.start() # 부모 프로세스 ID parent_pid = os.getpid() print('parent process pid = ', parent_pid) # 자식 프로세스 ID child_pid = child.pid print('child process pid = ', c..

Thread에서 사용한 Python Queue 간단한 예제
Python/Python - 스레드&프로세스2023. 10. 7. 06:57Thread에서 사용한 Python Queue 간단한 예제

하나의 스레드에서 큐에 데이터를 넣고 다른 쓰레드에서 큐에서 데이터를 꺼내는 간단한 예제 코드입니다. 아래 링크를 참고했습니다. https://docs.python.org/3/library/queue.html 2022. 09. 03 최초작성 2023. 01. 21 큐 모듈 변경. import threading from multiprocessing import Queue def producer(): count = 0 while True: lock.acquire() # 전역 변수 접근을 금지합니다. if not q.full(): # 큐가 꽉차지 않았다면 count = count +1 q.put_nowait(count) # 큐에 데이터를 넣습니다. print(f'push item {count}') lock.r..

Python/Python - 스레드&프로세스2022. 8. 6. 11:06파이썬에서 실행중인 스레드 이름 출력하기

파이썬에서 현재 실행중인 스레드의 이름을 출력해주는 예제 코드입니다. 2022. 8. 6. 최초작성 import threading import time def count(num): while num > 0: num = num - 1 print(num) print('thread exit') t = threading.Thread(target=count, args=(10, )) t.start() # 실행중인 스레드의 이름을 출력합니다. for thread in threading.enumerate(): print('***', thread.name) time.sleep(3) t.join() # join으로 스레드가 종료되길 기다립니다. print('main exit') 실행결과입니다. MainThread와 Thr..

반응형
image