Python中python多进程全局变量之间的数据共享
python多进程全局变量中每个进程都是独立的,各自持有一份数据无法共享。本篇文章介绍三种用于进程数据共享的方法
|
|
Queue是python多进程全局变量安全的队列可以使用Queue实现python多进程全局变量之间的数据传递。put方法用以插入数据到队列中put方法还有两个可选参数:blocked和timeout。如果blocked为True(默认徝)并且timeout为正值,该方法会阻塞timeout指定的时间直到该队列有剩余的空间。如果超时会抛出Queue.Full异常。如果blocked为False但该Queue已满,会立即抛出Queue.Full异常
get方法可以从队列读取并且删除一个元素同样,get方法有两个可选参数:blocked和timeout如果blocked为True(默认值),并且timeout为正值那么在等待时间内没有取到任何元素,会抛出Queue.Empty异常如果blocked为False,有两种情况存在如果Queue有一个值可用,则立即返回该值否则,如果队列为空则立即抛出Queue.Empty异常
|
|
|
|
Array的局限性在于受制于数组的特性,即需要指定数据类型且长度固定
|
|
|
Manager.dict是python多进程全局变量数据共享中比较常用的做法
send和recv方法分别是发送和接受消息的方法例如,在全双工模式下可以调用conn1.send发送消息,conn1.recv接收消息如果没有消息可接收,recv方法会一直阻塞如果管道已经被关闭,那么recv方法會抛出EOFError
|
|