首页 > 编程语言 > 详细

【Rollo的Python之路】Python 信号量 学习笔记 Semaphore

时间:2019-05-29 23:46:11      阅读:103      评论:0      收藏:0      [点我收藏+]

Python 信号量 学习笔记 Semaphore

信号量semaphore 是用于控制进入数量的锁。有哪些应用场景呢,比如说在读写文件的时候,一般只能只有一个线程在写,而读可以有多个线程同时进行,如果需要限制同时读文件的线程个数,这时候就可以用到信号量了(如果用互斥锁,就是限制同一时刻只能有一个线程读取文件)。又比如在做爬虫的时候,有时候爬取速度太快了,会导致被网站禁止,所以这个时候就需要控制爬虫爬取网站的频率。
 
一般用BounderSemaphore
实例:
 
import threading,time

class myThread(threading.Thread):
    def run(self):
        if semaphore.acquire():
            print(self.name)
            time.sleep(5)
            semaphore.release()

if __name__ == "__main__":
    semaphore = threading.BoundedSemaphore(5)
    thrs = []
    for i in range(100):
        thrs.append(myThread())

    for t in thrs:

        t.start()

 

【Rollo的Python之路】Python 信号量 学习笔记 Semaphore

原文:https://www.cnblogs.com/rollost/p/10946810.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!