python - 索引/有序队列?
问题描述
我有一个多线程应用程序,每个线程都从串行/UART 接口接收数据。
我想在它们到达时按顺序打印数据,但是有些数据更长,有些更短并且使用read_until
导致pyserial
顺序混淆(几毫秒/纳秒)
我需要像 Queue 这样的东西,但它可以按顺序删除元素,以确保我不会混淆它们。
接收线程
- 收到数据包的第一个字节后,我可以“获取下一个数字”(一些线程安全操作)
- 然后我可以等到所有数据到达
- 然后我可以将整个“数据包”推入队列
消费者线程 只能根据顺序索引消费队列中的元素,例如。1 和 2 已处理,已经有 4 和 5 等待,但我从来没有得到 3 我必须等待它才能继续。
我不想重新发明轮子——这是一个我没有命名的结构还是有人知道类似的东西?
解决方案
据我所知,python标准库中没有这样的结构(类似于“有序优先队列”)。并且很可能您将不得不实现类似包装器之类的东西,PriorityQueue
它可以跟踪项目的优先级,只允许以有序的方式提取,并缓冲其余部分。
推荐阅读
- python - wxMaxima 和 Sympy 的不定积分结果错误 (?)
- css - 嵌套的 CSS 网格子元素展开/移出容器
- ruby - Ruby中的套接字,我如何通过套接字异步读写数据
- vue.js - 如何为 Nuxt js 配置 laravel-vue-pagination
- flutter - 当我将远程分支合并到 loacl 分支合并按钮不起作用
- python - 如何在 url 中返回 Django 模型?
- ubuntu - 如何使用服务器 IP 地址完全禁用对 nginx 的访问?
- ffmpeg - 从视频文件ffmpeg中删除流
- asp.net - 即使没有错误并且执行已完成,也会出现 502 网关错误
- core-data - 核心数据:当我尝试获取时 UI 冻结