1个生产者,1个消费者,只有1个数据要通信,排队是不是有点过头了?

2024-06-01 10:05:42 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题与Python多处理相关。我要求为我的特定场景提供合适的进程间通信数据结构:

我的场景

我有一个生产者和一个消费者。在

  1. 制作者每10秒生成一个非常小的panda数据帧,然后将其放入python.multiprocess.queue。在
  2. consumer是一个GUI轮询,每100ms python.multiprocess.queue,它必须捕获生产者生成的每一个数据帧。在

我的想法

python.multiprocess.queue就是为了这个目的(我想),而且使用起来非常简单!(赞美绿色的斯莱林主!)。但我显然没有充分利用队列的潜力,因为队列上只有一个生产者、一个消费者和最多一个项目。这让我相信有比排队更简单的事情。我试图搜索它,我被下列选项淹没了:python 3.5 documentation: 18. Interprocess Communication and Networking。我也怀疑有没有一种方法完全不涉及进程间通信数据结构来满足我的需要。在

请注意

  1. 表现不是很重要
  2. 现在我将坚持多处理,而不是多线程。在

我的问题

我应该满足于排队吗?还是有更推荐的方法?我不是一个专业的程序员,所以我坚持用久经考验的方式做事。 我也欢迎任何其他解决我问题的方法的建议。在

谢谢


Tags: 数据方法数据结构队列queue进程consumer场景
1条回答
网友
1楼 · 发布于 2024-06-01 10:05:42

对我来说,你提到的最重要的事情是:

It is VERY CRITICAL that the consumer catches every single DataFrame the producer produces.

所以,假设您使用了一个变量来存储数据帧。生产者会把它设定为生产价值,而消费者只需阅读它。我想那会很好的。在

但是如果消费者被一个以上的生产周期所阻碍,会发生什么呢?然后在读取之前会重写一些旧值。这就是为什么我认为(线程安全)队列几乎是“按定义”的方式。在

另外,要小心过早的优化。如果对你的案子有用,那就太好了。如果有一天,在其他情况下,性能出现问题,只有这样你才应该花额外的工作,我

相关问题 更多 >