python中的线程:使用target =时检索返回值

han*_*ast 14 python memory multithreading

可能重复:
从线程返回值

我想得到像这样的一堆服务器的"免费记忆":

def get_mem(servername):  
    res = os.popen('ssh %s "grep MemFree /proc/meminfo | sed \'s/[^0-9]//g\'"' % servername)  
    return res.read().strip()  
Run Code Online (Sandbox Code Playgroud)

因为这可以是线程我想做类似的事情:

import threading  
thread1 = threading.Thread(target=get_mem, args=("server01", ))  
thread1.start()
Run Code Online (Sandbox Code Playgroud)

但是现在:如何访问get_mem函数的返回值?我真的需要去一个全功能的方式创建class MemThread(threading.Thread)和覆盖__init____run__

Mar*_*tos 14

您可以创建一个同步队列,将其传递给线程函数,并通过将结果推入队列来报告,例如:

def get_mem(servername, q):
    res = os.popen('ssh %s "grep MemFree /proc/meminfo | sed \'s/[^0-9]//g\'"' % servername)
    q.put(res.read().strip())

# ...

import threading, queue
q = queue.Queue()
threading.Thread(target=get_mem, args=("server01", q)).start()
result = q.get()
Run Code Online (Sandbox Code Playgroud)