首页 > 科技 >

Python网络编程(进程池、进程间的通信)(3)

2018-08-17 23:04:36 网络整理 阅读:116 评论:0

功能:

将要执行的事件放入进程池

参数:

func 要执行的函数

iter 可迭代对象

示例:

进程间的通信(IPC)

由于进程空间独立,资源无法共享,

此时在进程间通讯就需要专门的通讯方法

通信方法:

管道、消息队列、共享内存

信号、信号量、套接字

管道通信:

在内存中开辟一块内存空间,形成管道结构

多个进程使用同一个管道,即可通过对管道的读写操作进行通讯

multiprocessing --> Pipe

fd1,fd2 = Pipe(duplex=True)

功能:创建管道

参数:

默认表示双向管道

如果设置为False则为单向管道

返回值:

俩个管道对象的,分别表示管道的两端

如果是双向管道则均可读写

如果是单向管道则fd1只读,fd2只写

fd.recv()

功能:从管道读取信息

返回值:读取到的内容

当管道为空则阻塞

fd.send(data)

功能:向管道写入内容

参数:要写入的内容

当管道满时会阻塞

可以写入几乎所有Python所有数据类型

队列通信:

在内存中开辟队列结构空间,多个进程可见,

多个进程操作同一个队列对象可以实现消息存取工作

在取出时必须按照存入顺序取出(先进先出)

q = Queue(maxsize=0)

功能:

创建队列对象

参数:

maxsize默认表示根据系统分配空间储存消息

如果传入一个正整数则表示最多存放多少条消息

返回值:队列对象

q.put(data,[block,timeout])

功能:向队列存入消息

参数:

data:存入消息(支持Python数据类型)

相关文章