【发布时间】:2018-11-05 14:17:35
【问题描述】:
我有一个数字 ID 列表 (lst1),我将其传递给 API,并将 api 结果附加到另一个列表 (lst),如下所示:
lst = []
lst1 = [1,2,3,4,5,6]
print(len(lst1))
counter = 0
for i in lst1:
url = 'url.com/Id={}'.format(i)
while True:
try:
xml_data1 = requests.get(url).text
counter = counter+ 1
print(counter)
#print(xml_data1)
break
except requests.exceptions.RequestException as e:
print(e)
lst.append(xml_data1)
当我应用 future.concurrent 库时,代码会不断循环遍历相同的 ID。我可以告诉这一点,因为柜台号码不断重复,我该如何防止这种情况?
我如何应用 futures.concurrent 库的代码:
def get_data(xml):
print(len(lst1))
#counter = 0
for i in lst1:
url = 'url.com/Id={}'.format(i)
while True:
try:
xml_data1 = requests.get(url).text
counter = counter+ 1
print(counter)
#print(xml_data1)
break
except requests.exceptions.RequestException as e:
print(e)
lst.append(xml_data1)
with futures.ThreadPoolExecutor() as executor:
df_list = executor.map(get_data, lst1)
编辑:
def get_data(xml):
#counter = 0
for i in lst1:
url = 'url.com/Id={}'.format(i)
while True:
try:
xml_data1 = requests.get(url).text
counter = next(counter_object)
print(counter)
#print(xml_data1)
break
except requests.exceptions.RequestException as e:
print(e)
lst.append(xml_data1)
return lst
with futures.ThreadPoolExecutor() as executor:
lst = executor.map(get_data, lst1)
【问题讨论】:
标签: python python-3.x concurrent.futures