Python线程未设置输出变量B

2024-04-16 15:14:21 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我有一个简单的线程,它执行一个http请求,返回一个json对象,我想使用json.loads将其放入一个dict中,该dict通过传递对所述dict的引用来指定

def thr_get_json(host, port, path, result):
    conn = httplib.HTTPConnection(host, port)
    conn.request('GET', path)
    resp = conn.getresponse()
    if resp.status != 200:
        raise "HTTP Error!"
    result = json.loads(resp.read())

results = {}

get_thread = threading.Thread(target=thr_get_json, args=('example.com', 80, '/output.php', results))

由于某些原因,结果是空的。因为它是一个传递给函数的可变对象,所以它应该是一个引用,对吗?还是我在这件事上走得太远了


Tags: path对象jsonhttphostgetportresult
2条回答

您还需要传递一个键,或定义一个用于存储结果的键:

在函数内部,将数据附加到dict: 结果['responseData']=json.load(resp.read())

在线程执行后,您可以使用results['responseData']访问结果

您必须使用result.update()

你只是重写了结果,它是一个不同的变量

(注意您同时使用结果(单数)和结果)

相关问题 更多 >