1. ホーム
  2. python

[解決済み] Pythonでスレッドから戻り値を取得する方法は?

2022-03-20 19:15:10

質問

機能 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()

上に示した "one obvious way to do it" は、うまくいきません。 thread.join() 戻る None .

解決方法は?

Python 3.2+では、stdlibは concurrent.futures モジュールは、より高いレベルの API を threading これにはワーカスレッドからメインスレッドへの戻り値や例外の受け渡しが含まれます。

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)