python多執行緒————6、執行緒同步之Semaphore
阿新 • • 發佈:2018-11-12
控制程式碼進入執行緒的數量,控制併發數量,可以使用訊號量Semaphore。
1、定義訊號量sem = threading.Semaphore(3) #3為併發數量
2、消耗訊號量 sem.acquire()
3、釋放訊號量 sem.release()
#Semaphore是用於控制進入數量的鎖 #檔案,讀、寫, 寫一般只是用於一個執行緒寫,讀可以允許多個 #做爬蟲 import threading import time class HtmlSpider(threading.Thread): def __init__(self,url,sem): super(HtmlSpider, self).__init__() self.url = url self.sem = sem def run(self): time.sleep(2) print('Got html secessful!') sem.release() class UrlProducer(threading.Thread): def __init__(self,sem): super().__init__() self.sem = sem def run(self): for i in range(20): sem.acquire() thread_html = HtmlSpider("http://www.baidu.com/{}".format(i),self.sem) thread_html.start() if __name__ == "__main__": sem = threading.Semaphore(3) producer_thread = UrlProducer(sem) producer_thread.start()