我是使用Python 2.7.6的multithreading新手。我需要在启动后获取线程返回的值。
我的代码如下:
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,但不明白如何调整代码的答案。
答案 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)
它有效。
关心家伙。