1个生产者,1个消费者,只有1条数据要通信,队列是不是有点大材小用了?
1 producer, 1 consumer, only 1 piece of data to communicate, is queue an overkill?
这个问题与Python多处理有关。我正在为我的特定场景寻求合适的进程间通信数据结构:
我的场景
我有一个生产者和一个消费者。
- 生产者每 10 秒生成一个 单个 相当小的熊猫数据帧,然后生产者将其放在
python.multiprocess.queue
.
- 消费者是一个 GUI 轮询
python.multiprocess.queue
每 100 毫秒。消费者捕获生产者生成的每个 DataFrame 是非常重要的。
我的想法
python.multiprocess.queue
达到了目的(我认为),而且使用起来非常简单! (赞美绿色的 slithereen 领主!)。但是 我显然没有充分利用队列的全部潜力,只有一个生产者一个消费者,队列中最多只有一个项目。这让我相信有比队列更简单的东西。我试图搜索它,但被列在以下选项中的选项淹没了:python 3.5 documentation: 18. Interprocess Communication and Networking
。我还怀疑可能有一种方法根本不涉及我需要的进程间通信数据结构。
请注意
- 性能不是很重要
- 我现在会坚持使用多处理,而不是多线程。
我的问题
我应该满足于排队吗?还是有更推荐的方法?我不是专业的程序员,所以我坚持以久经考验的方式做事。
我也欢迎任何关于解决我的问题的替代方法的建议。
谢谢
对我来说,你提到的最重要的事情是:
It is VERY CRITICAL that the consumer catches every single DataFrame the producer produces.
那么,假设您使用 变量 来存储 DataFrame。生产者会将其设置为生产值,而消费者只需读取它即可。我想那会很好用。
但是,如果消费者以某种方式被多个生产周期阻塞,会发生什么情况?然后一些旧值会在读取之前被覆盖。这就是为什么我认为(线程安全的)队列几乎是 "by definition".
的方式
此外,提防过早优化。如果它适用于您的情况,那就太好了。如果有一天,在其他情况下,性能出现问题,那么你应该花费额外的工作,IMO。
这个问题与Python多处理有关。我正在为我的特定场景寻求合适的进程间通信数据结构:
我的场景
我有一个生产者和一个消费者。
- 生产者每 10 秒生成一个 单个 相当小的熊猫数据帧,然后生产者将其放在
python.multiprocess.queue
. - 消费者是一个 GUI 轮询
python.multiprocess.queue
每 100 毫秒。消费者捕获生产者生成的每个 DataFrame 是非常重要的。
我的想法
python.multiprocess.queue
达到了目的(我认为),而且使用起来非常简单! (赞美绿色的 slithereen 领主!)。但是 我显然没有充分利用队列的全部潜力,只有一个生产者一个消费者,队列中最多只有一个项目。这让我相信有比队列更简单的东西。我试图搜索它,但被列在以下选项中的选项淹没了:python 3.5 documentation: 18. Interprocess Communication and Networking
。我还怀疑可能有一种方法根本不涉及我需要的进程间通信数据结构。
请注意
- 性能不是很重要
- 我现在会坚持使用多处理,而不是多线程。
我的问题
我应该满足于排队吗?还是有更推荐的方法?我不是专业的程序员,所以我坚持以久经考验的方式做事。 我也欢迎任何关于解决我的问题的替代方法的建议。
谢谢
对我来说,你提到的最重要的事情是:
It is VERY CRITICAL that the consumer catches every single DataFrame the producer produces.
那么,假设您使用 变量 来存储 DataFrame。生产者会将其设置为生产值,而消费者只需读取它即可。我想那会很好用。
但是,如果消费者以某种方式被多个生产周期阻塞,会发生什么情况?然后一些旧值会在读取之前被覆盖。这就是为什么我认为(线程安全的)队列几乎是 "by definition".
的方式此外,提防过早优化。如果它适用于您的情况,那就太好了。如果有一天,在其他情况下,性能出现问题,那么你应该花费额外的工作,IMO。