Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как получить возвращаемое значение из потока?

... ... Ученик (105), на голосовании 1 месяц назад
Функция 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.

Только можно какой-нибудь простой способ сделать это
Голосование за лучший ответ
СКОРОЖАРКА!!! Гуру (3218) 3 месяца назад
самый простой способ с помощью глобальной переменной, но это плохой способ, лучше использовать очередь
 import queue 
from threading import Thread

def foo(bar,res):
print('hello {}'.format(bar))
res.put('foo')

return_value = queue.Queue()
thread = Thread(target=foo, args=['world!',return_value])
thread.start()
print(return_value.get())
... ...Ученик (105) 3 месяца назад
а как с помощью очереди сделать?
... ... Ученик (105) ... ..., а, всё спасибо
Похожие вопросы