如何访问线程返回的值?

时间:2015-06-28 16:29:31

标签: python multithreading python-2.x

我是使用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,但不明白如何调整代码的答案。

2 个答案:

答案 0 :(得分:2)

通过您发布的链接,您应该执行以下操作:

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()

答案 1 :(得分:0)

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

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)

它有效。

关心家伙。