0

所以我有一个简单的线程,它执行一个返回 json 对象的 http 请求,我想使用 json.loads 将其放入通过传递对所述 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))

由于某种原因,结果为空。因为它是一个传递给函数的可变对象,所以它是一个引用,对吗?或者我在这方面有出路。

4

2 回答 2

1

您必须使用 result.update()

你只是覆盖了结果,这是一个不同的变量

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

于 2013-10-24T13:46:05.783 回答
0

您还需要传递一个密钥,或者定义一个存储结果的密钥:

在您的函数内部将数据附加到字典中: result['responseData'] = json.loads(resp.read())

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

于 2013-10-24T13:48:20.967 回答