python threading Semaphore
Posted callyblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python threading Semaphore相关的知识,希望对你有一定的参考价值。
#Semaphore 是用于控制进入数量的锁,控制同时进行的线程,内部是基于Condition来进行实现的 #文件, 读、写, 写一般只是用于一个线程写,读可以允许有多个 #做爬虫 import threading import time class htmlSpider(threading.Thread): def __init__(self, url, sem): super().__init__() self.url = url self.sem = sem def run(self): time.sleep(2) print("got html text success") self.sem.release()# release一次就会加1 class UrlProducer(threading.Thread): def __init__(self, sem): super().__init__() self.sem = sem def run(self): for i in range(20): self.sem.acquire() # acquire一次,semphore的数量就减一,知道数量为0时,它就会阻塞在这里 html_thread = HtmlSpider("https://baidu.com/".format(i), self.sem) html_thread.start() if __name__ == "__main__": sem = threading.Semaphore(3) url_producer = UrlProducer(sem) url_producer.start()
以上是关于python threading Semaphore的主要内容,如果未能解决你的问题,请参考以下文章