我想要做的是能够调用具有多个线程的函数并获得它们的结果。
我有以下代码:
(这是一个例子,实际代码不会简单地将 str 转换为 int)
from threading import Thread
import time
import Queue
#an example - actual code connects to a server
def str_to_int(arg, queue):
result = 0
result = int(arg)
#sleep to check that they happen at once.
time.sleep(10)
queue.put(result)
def combine():
q1 = Queue.Queue()
q2 = Queue.Queue()
q3 = Queue.Queue()
t1 = Thread(target = str_to_int, args=("111", q1))
t2 = Thread(target = str_to_int, args=("222", q2))
t3 = Thread(target = str_to_int, args=("333", q3))
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
return (q1.get(),q2.get(),q3.get())
print combine()
此代码有效。我得到了预期的结果:
>>>
(111, 222, 333)
但是,必须有更好的方法来做到这一点。我计划拥有比 3 更多的线程,但即使我只使用 3 - 它看起来也很丑陋。
编辑:我需要能够知道哪个结果来自哪个线程(即:我给函数的参数/参数)