我创建了一个脚本:
从.txt(约5K)
导入IP列表连接到REST API并基于IP(每个IP的Web日志)执行查询
从API返回数据,并对数据进行一些计算
计算结果写入.csv
目前它真的很慢,因为它一次需要一个IP然后进入下一个IP。 我可能错了,但根据我对线程或多处理的理解,我可以有3-4个线程,每个线程都在做IP,这将大大提高工具的速度。我的理解是否正确,是否应该为我的任务寻找线程或多处理?
任何帮助都会令人惊讶
随机信息,运行python 2.7.5,Win7有足够的资源。
答案 0 :(得分:1)
使用多处理,一种原始的方法可以将文件分成5个相等的部分并将其分配给5个不同的进程将其结果写入5个不同的文件,当所有进程完成后,您将合并结果。
你可以在Python线程中使用相同的逻辑而不会有太多复杂的问题。并且可能不会有任何区别,因为瓶颈可能是API。所以最后你选择哪种方法并不重要。
但有两件事情可以考虑:
由于您提供的有关使用此脚本(或更好说程序)的方案的信息有限,因此很难说哪种方法更好。
答案 1 :(得分:1)
multiprocessing
绝对是前进的方式。您可以启动一个读取IP并将它们放在multiprocessing.Queue
中的进程,然后进行从该队列读取的几个进程(取决于可用资源),连接到API并发出请求。这些请求应该并行进行,如果API可以处理这些请求,您的程序应该更快完成。如果计算复杂且耗时,则可以将API的输出放入另一个Queue
,从其他进程开始,可以读取它们并进行计算和存储结果。您可能必须启动收集器流程来收集最终输出。
您可以在此stackoverflow question中找到此类问题的示例代码。如果您需要进一步的解释或示例代码,请在评论中告诉我。