【发布时间】:2020-12-13 22:23:11
【问题描述】:
由于这是一个设计问题,我认为代码无法做到这一点。
我正在编写一个程序来处理和记录高带宽数据流,并同时尝试实时观察该数据。 (就像生产线和检查员看着生产线)
我想在我的计算机上的内核之间分配负载,以便为未来的功能留出空间,但我不知道我是否可以为此使用多处理。似乎大多数多处理示例都有初始数据集和输出,并且不需要在其整个生命周期中进行主动通信。
我是否能够使用多处理在进程之间进行主动通信,或者这是一个坏主意,我应该坚持使用多线程?
【问题讨论】:
-
你使用的是什么 Python 实现?如果是 CPython,由于 GIL,多线程仅适用于几乎纯 I/O 边界任务。要在处理器之间分配实际工作,您需要多处理。并且数据可以在创建后通过在创建时给它们一个队列对象来馈送到进程中,您可以从进程外部将数据推送到该队列对象中。
-
@Carcigenicate 只是标准 python3
-
那么,那将是 CPython,如果您正在处理数据,则需要查看
multiprocessing。 -
@Carcigenicate 好的,我担心由于某些我不知道的原因,进程不应该相互依赖
标签: python multithreading multiprocessing