2016-06-28 46 views
0

我需要並行運行下列循環n次:即 一次迭代不應該等待其前面的迭代完成。 我希望所有的迭代能夠同時運行'n'的所有值,這樣我就可以減少運行時間並更快地獲得結果。我應該在這個python代碼中使用哪種方法..多線程或多處理?

for i in range(0,n): 
    api=str('some API string like https://maps.googleapis.com/maps/api/place/details/output?parameters '+offset+'') 
    tag=json_tag(api) #API call 
    temp=tag["data"] #parsing json response 

    for i in temp: 
     place_list.append(i["name"]) #storing name field in list 

    offset=int(offset) 
    offset+=50 

其中

def jason_tag(string): 
http = urllib3.PoolManager() 
r = http.request('GET',string) 
tag=json.loads(r.data.decode('utf8')) 
return tag 

我調用API 'N',這有一個 '偏移' 參數,從而改變每次當API調用時的時間..「json_tag(API)返回JSON API調用的響應。從json響應中獲取一些數據並將其存儲在名爲'place_list'的列表中。

我想輸出是same.i.e.列表中的內容(「place_list」)應該與我通常運行循環的順序相同。我應該使用哪種方法來運行循環並行多處理或多線程? 我怎樣才能實現它

+0

不清楚你在做什麼... –

+0

@AmitGold我打電話給一個'n'次的API,它有一個'offset'參數,每次調用API時都會改變''json_tag(api)'返回json對API調用的響應。從json響應中獲取一些數據並將其存儲在名爲'place_list'的列表中。 –

回答

0

得到你的最大線程數,並用線程數除n,如果需要平衡它。 然後只傳遞給線程參數循環的開始和結束。

例如:

def function(start, end): 
    for i in range(start,end): 
     [your code] 

保存結果,你可以做出某種有一些線程索引結果列表就知道善有善報1等再只是爲了拼接它。

相關問題