스레드에서 반환 값 액세스
스레드가 Python에서 생성되면 해당 대상 함수가 값을 반환할 수 있습니다. 그러나 기본 스레드에서 이 반환 값을 검색하는 것은 표준 방법을 사용하면 간단하지 않습니다.
한 가지 옵션은 목록이나 사전과 같은 변경 가능한 개체를 스레드에 전달하고 결과를 지정된 슬롯에 저장하는 것입니다. . 이 방법을 사용하려면 스레드에 추가 인수를 전달하고 스레드와 객체 간의 연결을 유지해야 합니다.
또 다른 접근 방식은 Thread 클래스를 하위 클래스로 분류하고 실행 및 조인 메서드를 재정의하는 것입니다. 재정의된 run 메서드에서 대상 함수의 반환 값은 하위 클래스 내의 전용 속성에 저장됩니다. 재정의된 조인 메서드는 이 속성에 저장된 값을 반환합니다.
다음은 ThreadWithReturnValue 하위 클래스를 사용하는 예입니다.
class ThreadWithReturnValue(Thread): def __init__(self, group=None, target=None, name=None, args=(), kwargs={}, Verbose=None): Thread.__init__(self, group, target, name, args, kwargs) self._return = None def run(self): if self._target is not None: self._return = self._target(*self._args, **self._kwargs) def join(self, *args): Thread.join(self, *args) return self._return
이 하위 클래스를 사용하려면:
twrv = ThreadWithReturnValue(target=foo, args=('world!',)) twrv.start() print(twrv.join()) # prints 'foo'
While 이 방법은 효과적이지만 Thread 클래스를 사용자 정의해야 하는데 이는 모든 시나리오에서 바람직하지 않을 수 있습니다. 궁극적으로 최선의 접근 방식은 애플리케이션의 특정 요구 사항과 요구 사항에 따라 달라집니다.
위 내용은 Python 스레드에서 반환 값을 어떻게 검색할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!