>  기사  >  백엔드 개발  >  Python에서 스레드 종료 및 정지를 구현하는 방법

Python에서 스레드 종료 및 정지를 구현하는 방법

不言
不言원래의
2018-09-11 15:59:425758검색
이 기사의 내용은 Python에서 스레드 종료 및 정지 구현 방법에 대한 것입니다. 필요한 친구가 참고할 수 있기를 바랍니다.

스레드를 강제로 종료하거나 일시 중단할 수 있는 방법은 없습니다. 이는 스레드 프로그램 작성이 본질적으로 복잡하기 때문에 의도적으로 설계된 것입니다. 예: 스레드가 잠금을 획득한 경우 잠금을 해제하기 전에 스레드를 강제로 종료하거나 일시 중단하면 전체 애플리케이션에서 교착 상태가 발생합니다. 또한 복잡한 스레드 동기화에는 잠금 및 잠금 지우기 작업이 포함되는 경우가 많고 실행 시 이러한 작업의 순서가 매우 정확해야 하기 때문에 일반적으로 종료 시 간단히 "모든 잠금을 해제"할 수 없습니다.

해지 또는 정지에 대한 서비스를 제공하려면 이러한 기능을 직접 구축해야 합니다. 일반적인 접근 방식은 스레드 상태를 주기적으로 확인하여 종료해야 하는지 여부를 결정하는 루프에서 스레드를 실행하는 것입니다. 예:
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에서 멀티스레딩 및 스레딩을 구현하는 방법

위 내용은 Python에서 스레드 종료 및 정지를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.