python - 在 Python 中仅锁定队列的入口/出口
问题描述
我有一个系统,其中包含 -
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
我的问题是如果队列不保护它,有什么办法只锁定队列的入口或出口?
解决方案
Queue 类知道并发访问并正确处理它。如果您从队列中拉出 ( queue.get()
) 并且队列中没有任何内容,则调用将阻塞或超时。如果您推送到队列 ( queue.put()
),那么这将得到正确处理,并且只有在您为队列设置了最大大小并且队列已满时,调用才会阻塞或超时。
文档说:
该
queue
模块实现了多生产者、多消费者队列。当必须在多个线程之间安全地交换信息时,它在线程编程中特别有用。该Queue
模块中的类实现了所有必需的锁定语义。这取决于 Python 中线程支持的可用性;见threading
模块。
推荐阅读
- azure-active-directory - 删除企业应用程序后的 SCIM 配置
- scala - 检查两个相邻元素是否使用 reduceLeft 排序
- python - 带有 ndarray 的 Scipy.stats.chi2_contingency - 值错误:'...使用 a.any() 或 a.all()'
- docker - 如何检索旧码头工人的码头工人图像?
- javascript - 如何在带有 typescript 和 Option API 的 Nuxt.js v2 中使用中间件、asyncData、fetch
- elasticsearch - 如何在fluentd的匹配中定义多个索引名称
- javascript - 如何添加javascript下拉更改?
- rust - 如何将 serde_json 与 enum 之类的联合类型一起使用?
- scrapy - 为什么启动浏览器无法呈现 youtube 主页?
- python - 如果 DataFrame 中的其他行值相同,如何聚合行值?