如何使用多处理/多线程来使我的Python脚本更快?

时间:2016-01-11 15:37:58

标签: python multithreading multiprocessing httprequest

我对Python和编程很新。我编写了一个脚本来浏览一长串的URL(~7000),并检查它们的状态以查找任何损坏的链接。可以预见,这需要几个小时来逐个请求每个URL。我听说多处理(或多线程?)可以用来加快速度。对此最好的方法是什么?我应该一次运行多少个进程/线程?我是否必须创建批量URL以同时检查?

1 个答案:

答案 0 :(得分:3)

问题的答案取决于该过程是否花费大部分时间处理数据或等待网络。如果是前者,那么您需要使用multiprocessing,并在系统上生成与物理核心一样多的进程。不要忘记确保为任务选择适当的算法。最后,如果所有其他方法都失败了,编码parts of the program in C也是一个可行的解决方案。

如果您的程序因为花费大量时间等待单个服务器响应而速度很慢,则可以使用threadsasynchronous IO framework并行化网络访问。在这种情况下,您可以使用比物理处理器核心更多的线程,因为大多数情况下您的核心将处于休眠状态,等待有趣的事情发生。您需要在计算机上测量结果,以找出适合您的最佳线程数。

无论您做什么,请确保您的程序没有通过大量并发或重复请求来锤击远程服务器。