在Python中仅锁定队列的进入/退出

时间:2019-04-02 08:12:34

标签: python multithreading queue

我有一个包含-

的系统
Queue & 2 types of instances -
                             1.push to the Queue
                             2.pull from Queue

我想同时从队列中推入和拉出,但是我不确定(我没有在文档中找到,也没有找到实现) 如果队列可以防止访问相同内存的冲突

for example:
    There is zero elements in the Queue -> I push and then I pull in the same time

我的问题是,如果队列不保护它,有什么方法只能锁定队列的入口或出口吗?

1 个答案:

答案 0 :(得分:1)

Queue类了解并发访问并正确处理。如果您从队列(queue.get())中拉出,但队列中没有任何内容,则呼叫将阻塞或超时。如果您推送到队列(queue.put()),则将正确处理此问题,并且仅当您为队列设置了最大大小且已满时,呼叫才会阻塞或超时。

Documentation说:

  

queue模块实现了多生产者,多消费者队列。它   当必须进行信息处理时,在线程编程中特别有用   在多个线程之间安全地交换。 Queue类在此   模块实现所有必需的锁定语义。这取决于   Python中线程支持的可用性;参见threading   模块。