<h2 class="post-title" style="background-color:rgb(255,255,255);">
<div class="post-body" style="font-size:14px;"><blockquote style="color:rgb(51,51,51);background-color:rgb(255,255);">
多进程中,每个进程都是独立的,各自持有一份数据,无法共享。本篇文章介绍三种用于进程数据共享的方法
<ul style="color:rgb(51,255);list-style:none;"><span class="line">2
<span class="line">3
<span class="line">4
<span class="line">5
<span class="line">6
<span class="line">7
<span class="line">8
<span class="line">9
<span class="line">10
<span class="line">11
<span class="line">12
<span class="line">13 multiprocessing queues multiprocessing : ",i,q.qsize()) ,ctx=multiprocessing) i range(): 404_57@方法用以插入数据到队列中,put方法还有两个可选参数:blocked和timeout。如果blocked为True(默认值),并且timeout为正值,该方法会阻塞timeout指定的时间,直到该队列有剩余的空间。如果超时,会抛出Queue.Full异常。如果blocked为False,但该Queue已满,会立即抛出Queue.Full异常
方法可以从队列读取并且删除一个元素。同样,get方法有两个可选参数:blocked和timeout。如果blocked为True(默认值),并且timeout为正值,那么在等待时间内没有取到任何元素,会抛出Queue.Empty异常。如果blocked为False,有两种情况存在,如果Queue有一个值可用,则立即返回该值,否则,如果队列为空,则立即抛出Queue.Empty异常
nofollow" class="headerlink" title="pipe">pipe
方法返回(conn1,conn2)代表一个管道的两个端。Pipe方法有duplex参数,如果duplex参数为True(默认值),那么这个管道是全双工模式,也就是说conn1和conn2均可收发。duplex为False,conn1只负责接受消息,conn2只负责发送消息
方法分别是发送和接受消息的方法。例如,在全双工模式下,可以调用conn1.send发送消息,conn1.recv接收消息。如果没有消息可接收,recv方法会一直阻塞。如果管道已经被关闭,那么recv方法会抛出EOFError