스레드를 강제로 종료하거나 일시 중단할 수 있는 방법은 없습니다. 이는 스레드 프로그램 작성이 본질적으로 복잡하기 때문에 의도적으로 설계된 것입니다. 예: 스레드가 잠금을 획득한 경우 잠금을 해제하기 전에 스레드를 강제로 종료하거나 일시 중단하면 전체 애플리케이션에서 교착 상태가 발생합니다. 또한 복잡한 스레드 동기화에는 잠금 및 잠금 지우기 작업이 포함되는 경우가 많고 실행 시 이러한 작업의 순서가 매우 정확해야 하기 때문에 일반적으로 종료 시 간단히 "모든 잠금을 해제"할 수 없습니다.
해지 또는 정지에 대한 서비스를 제공하려면 이러한 기능을 직접 구축해야 합니다. 일반적인 접근 방식은 스레드 상태를 주기적으로 확인하여 종료해야 하는지 여부를 결정하는 루프에서 스레드를 실행하는 것입니다. 예:from threading import Thread,Lock class StoppableThread(Thread): def __init__(self): Thread.__init__(self) self._terminate=False self._suspend_lock=Lock() def terminate(self): self._terminate=True def suspend(self): self._suspend_lock.acquire() def resume(self): self._suspend_lock.release() def run(self): while True: if self._terminate: break self._suspend_lock.acquire() self._suspend_lock.release() ...
Remember. 이 방법이 안정적으로 작동하려면 스레드가 어떤 종류의 차단 I/O 작업도 수행하지 않도록 매우 주의해야 합니다. 예를 들어 스레드가 데이터 도착을 기다리는 동안 차단되면 작업이 깨어날 때까지 종료되지 않습니다. 따라서 종료 확인이 충분히 자주 수행되도록 하려면 실제로 시간 제한, 비차단 I/O 및 기타 고급 기능을 사용해야 합니다.
관련 권장사항:
Python의 Threadpool 스레드 풀 작업 종료 샘플 코드에 대한 자세한 설명
위 내용은 Python에서 스레드 종료 및 정지를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!