Python爬虫编程思想(141):多线程和多进程爬虫--生产者-消费者问题与queue模块
蒙娜丽宁 于 2022-03-31 19: 2022-3-31 19:36:46 Author: blog.csdn.net(查看原文) 阅读量:8 收藏

蒙娜丽宁 于 2022-03-31 19:36:46 发布 3959 收藏

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

153 篇文章 24 订阅 ¥29.90 ¥99.00

        本文使用线程锁以及队列来模拟一个典型的案例:生成者-消费者模型。在这个场景下,商品或服务的生产者生成商品,然后将其放到类似队列的数据结构中,生产商品的时间是不确定的,同样消费者消费生产者生产的商品的时间也是不确定的。

        这里使用queue模块来提供线程间通讯的机制,也就是说,生产者和消费者共享一个队列。生产者生成商品后,会将商品添加到队列中。消费者消费商品,会从队列中取一个商品。由于向队列中添加商品和从队列中获取商品都不是原子操作,所以需要使用线程锁将这两个操作锁住。

        下面的例子使用线程锁和队列实现了一个生产者-消费者模型的程序。通过for循环产生若干个生产者和消费者,并向队列中添加商品,以及从队列中获取商品。

from random import randrange
from time import sleep,time, ctime
from threading import Lock, Thread
from queue import Queue
# 创建线程锁对象
lock = Lock()
# 从Thread派生的子类
class MyThread(Thread):
    def __init__(self, func, args):
        super().__init__(target = func, args = args)
# 向

文章来源: https://blog.csdn.net/nokiaguy/article/details/123881249
如有侵权请联系:admin#unsafe.sh