Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: How to get multiple return values from a threaded function

Have called an external function which returns multiple values.

def get_name(full_name):
   # you code
   return first_name, last_name

In simple function call, I can get the results.

from names import get_name

first, last= get_name(full_name)

But I need to use threading for the call to get the result values for the first and last variables. I failed in using a simple threading call.

first, last= Threading.thread(get_name, args= (full_name,)

Please help me to get the return values of the function call

like image 327
K K Avatar asked May 11 '18 10:05

K K


1 Answers

You should use a queue for retrieve data from threads, here you have an example using a wrapper to store values from the functions into a queue:

import threading
import queue

my_queue = queue.Queue()

def storeInQueue(f):
  def wrapper(*args):
    my_queue.put(f(*args))
  return wrapper


@storeInQueue
def get_name(full_name):
   return full_name, full_name



t = threading.Thread(target=get_name, args = ("foo", ))
t.start()

my_data = my_queue.get()
print(my_data)

Here you have the live working example

like image 76
Netwave Avatar answered Sep 24 '22 07:09

Netwave