#semaphore 是用於控制進入數量的鎖
#檔案, 讀、寫, 寫一般只是用於乙個執行緒寫,讀可以允許有多個
#做爬蟲
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() #完成後,就釋放,可用執行緒數加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() #在這裡每啟動乙個執行緒,可用執行緒數量就會減1
html_thread = htmlspider("".format(i), self.sem)
html_thread.start()
if __name__ == "__main__":
sem = threading.semaphore(3) # 定義最多啟用多少個執行緒
url_producer = urlproducer(sem)
url_producer.start()
控制線程的方法
控制線程的方法有join sleep 休眠 yield 讓步 suspend 掛起 resume 恢復 簡單的測試下sleep 和yield 並說明執行緒在這兩種狀態下對cpu的持有狀態和對同步鎖的持有狀態 在這裡不貼出程式執行的結果,大家可以根據 在自己的機器上跑一 會一下我接下來要闡述的,這要看...
pthread sigmask 控制線程的訊號掩碼
示例1 示例一 遮蔽訊號sigint 編譯 gcc pthread sigmask1.c lpthread 執行後,你發現你按下ctrl c 觸發sigint訊號 這個程式根本停不下來。因為sigint訊號已經如我們所願被遮蔽掉了。include include include include in...
控制線程的常用方法
讓乙個執行緒等待另乙個執行緒完成的方法 例如,main執行緒中呼叫a執行緒的join方法後,那麼在a執行緒結束後,main才會繼續執行 如果還有其他執行緒,其他執行緒與她兩無關 public static void main string args throws interruptedexcepti...