rs75 发表于 2020-10-8 12:39:44

多进程怎么一对多传递数据

一个进程产生数据, 然后每条数据都要传输到主进程的每个消费线程来让它们选择属于自己的,用什么方式合适?

lhgzbxhz 发表于 2020-10-8 15:36:47

跨进程的话......想要跨平台的话只能用文件操作,但是那样可能会涉及到文件锁问题,编程难度大
如果是在windows环境下最好用内存映射文件

BSOD 发表于 2020-10-8 23:32:13

本帖最后由 BSOD 于 2020-10-8 23:34 编辑

那就是进程间通讯啊, 途径有很多种: 队列, 管道...
我一般喜欢使用Python自带的队列
from multiprocessing import Manager

queue = Manager().Queue()

def one_process():
    queue.put("something")
   
def other_process():
    data = queue.get()

友情提示: 我的代码只是简化的, 不要直接使用,一定要注意的是如果在windows平台时, Queue的实例化一定要在入口函数后面, 否则将会报错!

rs75 发表于 2020-10-9 11:18:10

BSOD 发表于 2020-10-8 23:32
那就是进程间通讯啊, 途径有很多种: 队列, 管道...
我一般喜欢使用Python自带的队列



每一份数据都要传到每个消费者, 队列管道都只能被获取一次啊

BSOD 发表于 2020-10-9 18:43:15

rs75 发表于 2020-10-9 11:18
每一份数据都要传到每个消费者, 队列管道都只能被获取一次啊

那还不简单使用`Manager`衍生出来的其他数据类型啊, 例如: dict, array等
from multiprocessing import Manager

t_dict = Manager().dict()
页: [1]
查看完整版本: 多进程怎么一对多传递数据