프로그래밍 언어/Python

파이썬 스레드에서 반환 값을 얻는 방법

Rateye 2021. 8. 13. 10:15
728x90
반응형
질문 : 파이썬 스레드에서 반환 값을 얻는 방법은 무엇입니까?

foo 함수 'foo' 문자열을 반환합니다. 스레드의 대상에서 반환되는 'foo' 값을 어떻게 얻을 수 있습니까?

from threading import Thread

def foo(bar):
    print('hello {}'.format(bar))
    return 'foo'

thread = Thread(target=foo, args=('world!',))
thread.start()
return_value = thread.join()

위에 표시된 "한 가지 분명한 방법"은 작동하지 않습니다. thread.join() None 반환했습니다.

답변

Python 3.2 이상에서 stdlib concurrent.futures 모듈은 반환 값 또는 예외를 작업자 스레드에서 주 스레드로 다시 전달하는 것을 포함 threading 더 높은 수준의 API를 제공합니다.

import concurrent.futures

def foo(bar):
    print('hello {}'.format(bar))
    return 'foo'

with concurrent.futures.ThreadPoolExecutor() as executor:
    future = executor.submit(foo, 'world!')
    return_value = future.result()
    print(return_value)
출처 : https://stackoverflow.com/questions/6893968/how-to-get-the-return-value-from-a-thread-in-python
728x90
반응형