如何访问从线程返回的值?

How to access the values returned from threads?

我是 使用 Python 2.7.6 的新手。我需要在启动线程后获取线程返回的值。

我的代码如下:

from threading import Thread
from functions import *

class Client(Thread):
    def __init__(self, index,ip,t,i=1):
        Thread.__init__(self)
        self.ip_dst = ip
        self.t = t

    def run(self):
        value_back = execute(self.ip_dst,self.t,i=1)
        return value_back

execute_client 函数 由每个线程 执行。我想在最后为每个线程获取 value_back 并将它们存储在列表数据结构中。 执行函数在我写的函数模块里面。

我看了这个 related issue 但不明白如何为我的代码调整答案。

采纳自您发布的 link,您应该这样做:

from Queue import Queue
from threading import Thread
from functions import *

class Client(Thread):
    def __init__(self, someargs, queue):
        Thread.__init__(self)
        self.queue = queue

    def run(self):
        value_back = execute(self.ip_dst,self.t,i=1)
        self.queue.put(value_back)

myqueue = Queue.Queue
myclient = Client(someargs, myqueue)
myclient.start()

并通过以下方式获取结果:

fetch = myqueue.get()

我现在解决了,非常感谢你们。 我所做的如下:

from Queue import Queue

from threading import Thread

from functions import *

class Client(Thread): def __init__(self,myqueue): Thread.__init__(self) self.myqueue = myqueue def run(self): value_back = execute(self.ip_dst,self.t,i=1) self.myqueue.put(value_back)

它奏效了。

大家好。