Python 1个生产者,1个消费者,只有1条数据需要通信,队列是一种过度使用吗?
这个问题与Python多处理相关。我要求为我的特定场景提供合适的进程间通信数据结构: 我的情景 我有一个生产者和一个消费者Python 1个生产者,1个消费者,只有1条数据需要通信,队列是一种过度使用吗?,python,python-3.x,pandas,multiprocessing,interprocess,Python,Python 3.x,Pandas,Multiprocessing,Interprocess,这个问题与Python多处理相关。我要求为我的特定场景提供合适的进程间通信数据结构: 我的情景 我有一个生产者和一个消费者 生产者每10 ish秒生成一个相当小的panda数据帧,然后生产者将其放在python.multiprocess.queue上 使用者是一个GUI轮询,每100ms轮询一次python.multiprocess.queue。消费者捕获生产者生成的每一个数据帧是非常关键的 我的想法 python.multiprocess.queue就是为了达到这个目的(我想),而且使用起来非
python.multiprocess.queue
上python.multiprocess.queue
就是为了达到这个目的(我想),而且使用起来非常简单!(赞美绿色滑梯主!)。但是我显然没有充分利用队列的潜力,因为队列中只有一个生产者、一个消费者和最多一个项目。这让我相信有比排队更简单的事情。我试图搜索它,但我被下列选项弄得不知所措:python3.5文档:18。进程间通信和联网
。我还怀疑有一种方法根本不涉及进程间通信数据结构,以满足我的需要
请注意
谢谢我,你提到的最重要的事情是: 消费者捕获生产者生成的每一个数据帧是非常关键的 因此,假设您使用了一个变量来存储数据帧。生产者将其设置为生产价值,消费者只需阅读即可。我想那会很好用的 但是,如果消费者不知何故被不止一个生产周期所阻碍,会发生什么呢?然后在读取之前会覆盖一些旧值。这就是为什么我认为(线程安全的)队列几乎是“按定义”的方式
此外,要小心过早的优化。如果对你的情况有效,那就太好了。如果有一天,在另一种情况下,性能出现问题,那么您只需要花费额外的工作,IMO.“python.multiprocess.queue很好地实现了这一目的,而且使用起来非常简单!”——“性能不是很重要”。看起来你已经对它很满意了,所以有比排队更好的方法吗?我也很喜欢走路,直到我知道你会跑,甚至会飞。这类问题可能会得到更好的回答。@Kateract在提到其他网站时,指出concurrent.futures.ThreadPoolExecutor和ProcessPoolExecutor
a(线程安全)队列几乎是“按定义”的方式通常是很有帮助的.
嗯,我的答案与多线程有关,但你说你在使用多线程处理,所以我想这与额外的进程有关。而且,关于分区,据我所知,在同一进程中运行的线程之间划分工作比拥有多个进程、彼此通信、查看进程间通信更为轻量级。关于“谁负责”,答案是:无论模块实现者选择何种方式封装在python.multiprocess.queue
类中,我想您都可以查看源代码。关于最后一条评论,请注意multiprocess.queue
是一个专用队列,而不是常规队列,虽然它们实现了相同的行为(但实现方式不同)。