ncr*_*fer 5 python multithreading urllib2
我尝试创建一个Python脚本,对多个站点执行查询.该脚本运行良好(我使用urllib2),但只是一个链接.对于多个站点,我一个接一个地发出多个请求,但它不是很强大.
什么是理想的解决方案(我猜的线程)并行运行多个查询并在查询返回特定字符串时停止其他查询?
我发现了这个问题,但我还没有找到如何更改它以停止剩余的线程......: Python urllib2.urlopen()很慢,需要更好的方法来读取几个网址
先感谢您 !
(对不起,如果我用英语犯错,我是法国人^^)
通常这是用以下模式实现的(抱歉,我的Python技能不太好)。
您有一个名为 Runner 的类。这个类有一个长时间运行的方法,它可以获取您需要的信息。此外,它还有一个 Cancel 方法,该方法以某种方式中断长时间运行的方法(您可以使 url request 对象成为类成员字段,因此 cancel 类会调用 request.terminate() 的等效项)。
长时间运行的方法需要接受一个回调函数,在完成时发出信号。
然后,在启动多个线程之前,创建该类的所有这些对象的实例,并将它们保存在一个列表中。在同一个循环中,您可以启动这些长时间运行的方法,并传递主程序的回调方法。
并且,在回调方法中,您只需遍历所有线程类的列表并调用它们的取消方法。
请使用任何 Python 特定实现来编辑我的答案:)