python多執行緒————3、多執行緒間通訊:共享變數,queue
阿新 • • 發佈:2018-11-12
1、共享變數
#通過共享變數 import time import threading url_list = [] def get_detail_html(): global url_list while True: if len(url_list): url_list.pop() print("get detail html started") time.sleep(3) print("get detail html end") def get_detail_url(): while True: global url_list print("get detail url started") url_list.append(1) time.sleep(1) print("get detail url end") if __name__ == "__main__": thread2 = threading.Thread(target=get_detail_url) thread2.start() for i in range(2): thread1 = threading.Thread(target=get_detail_html) thread1.start() #thread1.join() #thread1.setDaemon(True) #thread2.setDaemon(True) start_time = time.time() #thread2.join() print(time.time() - start_time)
2、通過queue
#通過queue import time import threading from queue import Queue def get_detail_html(queue): while True: queue.put() print("get detail html started") time.sleep(3) print("get detail html end") def get_detail_url(queue): while True: print("get detail url started") queue.get(1) time.sleep(1) print("get detail url end") if __name__ == "__main__": url_queue = Queue(maxsize=1000) thread2 = threading.Thread(target=get_detail_url,args=(url_queue,)) thread2.start() for i in range(2): thread1 = threading.Thread(target=get_detail_html,args=(url_queue,)) thread1.start() #thread1.join() #thread1.setDaemon(True) #thread2.setDaemon(True) start_time = time.time() #thread2.join() print(time.time() - start_time)