所以我有一个简单的线程,执行一个返回一个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))
由于某种原因,结果是空的。因为它是一个可变对象传递给函数然后它将是一个引用权?或者我可以解决这个问题。
答案 0 :(得分:1)
您必须使用result.update()
你只是覆盖了结果,这是一个不同的变量
(注意你同时使用结果(单数)和结果)
答案 1 :(得分:0)
您需要传递一个密钥,或者定义一个存储结果的密钥:
在函数内部将数据附加到dict: result ['responseData'] = json.loads(resp.read())
您可以在线程执行后使用结果['responseData']访问结果