6

Python爬虫编程思想(140):多线程和多进程爬虫--信号量

 2 years ago
source link: https://blog.csdn.net/nokiaguy/article/details/123881148
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Python爬虫编程思想(140):多线程和多进程爬虫--信号量

original.png
蒙娜丽宁 newCurrentTime2.png 于 2022-03-31 19:33:41 发布 articleReadEyes2.png 66

        从前面的例子可以看出,线程锁非常容易理解和实现,也很容易决定何时需要它们,然而,如果情况更加复杂,就可能需要更强大的技术配合线程锁一起使用。本节要介绍的信号量就是这种技术之一。

        信号量是最古老的同步原语之一,它是一个计数器,用于记录资源消耗情况。当资源消耗时递减,当资源释放时递增。我们可以认为信号量代表资源是否可用。消耗资源使计数器递减的操作习惯上称为P,当一个线程对一个资源完成操作时,该资源需要返回资源池中,这个操作一般称为V。Python语言统一了所有的命名,使用与线程锁同样的方法名消耗和释放资源。acquire方法用于消耗资源,调用该方法计数器会减1,release方法用于释放资源,调用该方法计数器会加1。

        使用信号量首先要创建BoundedSemaphore类的实例,并且通过该类的构造方法传入计数器的最大值,然后就可以使用BoundedSemaphore对象的acquire方法和release方法获取资源(计数器减1)和释放资源(计数器加1)了。

        下面的例子演示了信号量对象的创建,以及获取与释放资源。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK