python多线程————3、多线程间通

发布时间:2019-09-21 10:44:57编辑:auto阅读(1378)

    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)

     

关键字