我正在编写一个程序,在数据库中的IP地址上运行跟踪路由(在Windows中使用tracert),操作响应并存储它。我已经全力以赴,但程序运行时间太长。该数据库包含~5000个IP地址,每个跟踪需要约30秒。这就是代码现在的样子:
output_files = getOutputFiles(output_dir)
ip_or_list = getIpsORs(server, user, passhash)
for obj in ip_or_list:
ip = obj[0]
order_nr = obj[1]
trace = runTrace(ip)
output_filename = order_nr + '___' + ip + '.txt'
if output_filename in output_files:
handleOutput(output_filename, trace)
else:
newOutputFile(output_filename, trace)
handleOutput(output_filename, trace)
这会线性执行代码,遍历ip_or_list中的每个IP,等待跟踪完成,处理输出等。我需要的是能够同时运行4+轨迹的东西,存储以某种方式从中检索的数据,以便我可以在之后处理这些数据。
我确信有方法可以做到这一点。我相信我需要一些叫做异步编程(?)的东西,我已经做过研究了。 我找到了解决多线程或使用asyncio库的解决方案,但我不明白究竟是什么区别以及我需要解决这个问题。
我要问的是,我应该使用哪种方法解决这个问题,以便我能够正确地研究它是如何工作的,以及如何将它应用到我的情况而不会太困惑。