我正在尝试使用多重处理从给定的IP地址列表中进行API验证。包含有效IP的所有进程将存储在共享队列中。但是,当我在执行多处理中的进程后尝试打印队列时,最终队列为空。有人可以告诉我如何修复代码吗?非常感谢。
def validate(ip_address, results):
try:
response = requests.get('....API_URL....'))
if response.status_code is 200:
""" store in queue if valid """
results.put(multiprocessing.current_process())
except ConnectionError:
pass
def main():
""" ip_list is given """
results = multiprocessing.Queue()
processes = []
for ip in ip_list:
process = multiprocessing.Process(target = validate, args=(ip,results))
processes.append(process)
for p in processes:
p.start()
for p in processes:
p.join()
while results.empty() is False:
result = results.get()
final_list.append(result)
print(final_list) ### EMPTY queue
main()
EDIT1:我尝试用results.put(multiprocessing.current_process())
之类的随机变量替换results.put("randomTEXT")
,但是final_list仍然显示为空。另外,有人可以建议我一种方法来存储成功请求API的进程的标识/名称/ ID吗?非常感谢!