Python线程没有设置输出变量

时间:2013-10-24 13:44:23

标签: python

所以我有一个简单的线程,执行一个返回一个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))

由于某种原因,结果是空的。因为它是一个可变对象传递给函数然后它将是一个引用权?或者我可以解决这个问题。

2 个答案:

答案 0 :(得分:1)

您必须使用result.update()

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

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

答案 1 :(得分:0)

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

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

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