【问题标题】:Indexed/ordered queue?索引/有序队列?
【发布时间】:2020-07-02 09:18:52
【问题描述】:

我有一个多线程应用程序,每个线程都从一个串行/UART 接口接收数据。

我想在数据到达时按顺序打印数据,但是有些数据较长,有些较短,使用 pyserialread_until 会导致顺序混淆(几毫秒/纳秒)

我需要像队列这样的东西,但它可以按顺序删除元素以确保我不会混淆它们。

接收线程

  1. 收到数据包的第一个字节后,我可以“获取下一个数字”(一些线程安全操作)
  2. 那我可以等到所有数据都到了
  3. 然后我可以将整个“数据包”推入队列

消费者线程只能根据顺序索引消费队列中的元素,例如。 1 和 2 已处理,已经有 4 和 5 等待,但我从来没有得到 3 我必须等待它才能继续。

我不想重新发明轮子 - 这是一个我无法命名的结构还是有人知道类似的东西?

【问题讨论】:

    标签: python python-3.x multithreading queue


    【解决方案1】:

    据我所知,python 标准库中没有这样的结构(类似于“有序优先队列”)。并且很可能您必须在 PriorityQueue 上实现类似包装器之类的东西,以跟踪项目的优先级,只允许以有序的方式提取,并缓冲其余部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-09
      相关资源
      最近更新 更多