我正在编写一个程序,在数据库的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条踪迹的东西,存储检索到的数据从某种程度上说,以便我可以在之后处理这些数据。
我相信有办法做到这一点。 我相信我会需要一些叫做asynchronous编程(?)的东西,为此我进行了研究。 我已经find了解决multithreading或使用asyncio库的解决scheme,但是我不明白这个问题究竟有什么区别,我需要什么。
我所要问的是,我应该用哪种方法解决这个问题,以便我能够正确地研究它是如何工作的,以及如何将它应用于我的情况而不会感到困惑。