【Python-多进程】Python中多进程之间的数据共享

前端之家收集整理的这篇文章主要介绍了【Python-多进程】Python中多进程之间的数据共享前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

<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;">
  • queues
  • Array
  • Manager.dict
  • pipe
  • <h1 style="color:rgb(51,255);"><a href="https://blog.csdn.net/luckyzhou_/article/details/70185999#Queue" rel="nofollow" class="headerlink" title="Queue">Queue<table style="color:rgb(51,255);border-spacing:0px;width:852px;"><tr><td class="gutter"><pre style="font-size:14px;line-height:22px;"><span class="line">1
    <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异常

    multiprocessing i range(): 404_57@nofollow" class="headerlink" title="Array">Array
    multiprocessing Process multiprocessing Array : item ar: ) ,) i range():
    : ctypes.c_char,: ctypes.c_wchar, : ctypes.c_byte,: ctypes.c_ubyte, : ctypes.c_short,: ctypes.c_ushort, : ctypes.c_int,: ctypes.c_uint, : ctypes.c_long,: ctypes.c_ulong, : ctypes.c_float,: ctypes.c_double 404_57@nofollow" class="headerlink" title="Manager.dict">Manager.dict
    multiprocessing Process,Manager 函数 数据共享的特殊字典 : i range(): 修改主进程的特殊字典 ] ,] ,,,] ,,] 404_57@是多进程数据共享中比较常用的做法

    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

    multiprocessing : : ,pp[],)) ],)) 404_57@

    猜你在找的Python相关文章