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

10,864

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

Share:
10,864
K K
Author by

K K

Updated on June 11, 2022

Comments

  • K K
    K K over 1 year

    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

  • K K
    K K over 5 years
    Thanks for the help.
  • Nimitz14
    Nimitz14 over 2 years
    this is overkill, concurrent.futures would be better