线程之间的通信

线程之间的通信:

1)通过queue的方法来实现线程通信

from queue import Queue

def get_html_detail(queue):
    while True:
        url = queue.get()
        # url = queue.get_nowait()
        print('开始获取界面{url}'.format(url=url))
        time.sleep(3)
        print('获取界面{url}成功---------------------------------------------------------------------------------'.format(url=url))

def get_url(queue):
    while True:
        print('获取界面元素url开始')
        time.sleep(0.5)
        for i in range(5):
            queue.put("http://projecedu.com/{id}".format(id=i))
        print('获取界面元素url结束')

if __name__ == '__main__':
    url_list_queue = Queue(1000)

    thread_get_url = threading.Thread(target=get_url,args=(url_list_queue,))
    thread_get_url.start()


    for i in range(10):
        html_thread = threading.Thread(target=get_html_detail,args=(url_list_queue,))
        html_thread.start()

    start_time = time.time()

    time.sleep(1)

    #queue发送一个task_down
    url_list_queue.task_done()
    #queue的join函数当接收到一个task_done信号时阻塞主进程。
    url_list_queue.join()

    print('主线程用时{}'.format(time.time() - start_time))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值