2013-10-24 2 views
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)) 

어떤 이유로 든 결과가 비어 있습니다. 함수에 전달되는 가변 객체이므로 참조 권일까요? 아니면 내가 나가는 길이야.

+0

예, 그게 내가 읽을 코드를 최소화 더 노력하고, 암시되지 않았다 생각을 실행 한 후 결과 [ '드 responseData를']를 사용하여 결과를 액세스 할 수 있습니다. 나는 조인 후에 읽으려고했다. – t0mmyt

답변

1

당신은

당신을 그냥 덮어 결과, 그것은 다른 그

같은 변수 (당신은 결과 (단수를 모두 사용한다는 사실에주의) 및 결과)

0
의 result.update()를 사용해야합니다

키를 잘 전달하거나 결과를 저장할 키를 정의해야합니다.

함수 내부에 다음 데이터가 추가됩니다. 결과 [ 'responseData'] = json.loads (resp. read())

당신은 스레드가

+0

키가 여러 개 있지만 json 객체가 제공합니다. 결과는 기본적으로 빈 컨테이너입니다. dict.update()가 문제를 해결했습니다. – t0mmyt

관련 문제