2013-10-24 18 views
0

所以我有一個簡單的線程去執行一個返回一個json對象的http請求,並且我想用json.loads把這個參數傳遞給一個字典, 。Python線程沒有設置輸出變量

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

是的,我想這是暗示,我試圖儘量減少任何代碼讀取後訪問結果。加入後我正在嘗試閱讀。 – t0mmyt

回答

1

必須使用result.update()

你剛纔改寫的結果,這就像

不同的變量(注意,你同時使用的結果(奇異的事實)和結果)

0

你需要傳遞一個密鑰,或者定義一個密鑰來存儲結果:

函數內部附加數據到字典: result ['responseData'] = json.loads(resp。閱讀())

您可以通過使用結果[「responseData」]線程執行

+0

有多個鍵,但是這些都是由json對象提供的。結果基本上是一個空容器。 dict.update()已經解決了這個問題。 – t0mmyt