Python爬虫编程思想(140):多线程和多进程爬虫--信号量
Posted 蒙娜丽宁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬虫编程思想(140):多线程和多进程爬虫--信号量相关的知识,希望对你有一定的参考价值。
从前面的例子可以看出,线程锁非常容易理解和实现,也很容易决定何时需要它们,然而,如果情况更加复杂,就可能需要更强大的技术配合线程锁一起使用。本节要介绍的信号量就是这种技术之一。
信号量是最古老的同步原语之一,它是一个计数器,用于记录资源消耗情况。当资源消耗时递减,当资源释放时递增。我们可以认为信号量代表资源是否可用。消耗资源使计数器递减的操作习惯上称为P,当一个线程对一个资源完成操作时,该资源需要返回资源池中,这个操作一般称为V。Python语言统一了所有的命名,使用与线程锁同样的方法名消耗和释放资源。acquire方法用于消耗资源,调用该方法计数器会减1,release方法用于释放资源,调用该方法计数器会加1。
使用信号量首先要创建BoundedSemaphore类的实例,并且通过该类的构造方法传入计数器的最大值,然后就可以使用BoundedSemaphore对象的acquire方法和release方法获取资源(计数器减1)和释放资源(计数器加1)了。
下面的例子演示了信号量对象的创建,以及获取与释放资源。
以上是关于Python爬虫编程思想(140):多线程和多进程爬虫--信号量的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫编程思想(135):多线程和多进程爬虫--Python与线程
Python爬虫编程思想(135):多线程和多进程爬虫--Python与线程
Python爬虫编程思想(142):多线程和多进程爬虫--多进程
Python爬虫编程思想(142):多线程和多进程爬虫--多进程