<bdo id='4tvwx'></bdo><ul id='4tvwx'></ul>

        <tfoot id='4tvwx'></tfoot>
        <i id='4tvwx'><tr id='4tvwx'><dt id='4tvwx'><q id='4tvwx'><span id='4tvwx'><b id='4tvwx'><form id='4tvwx'><ins id='4tvwx'></ins><ul id='4tvwx'></ul><sub id='4tvwx'></sub></form><legend id='4tvwx'></legend><bdo id='4tvwx'><pre id='4tvwx'><center id='4tvwx'></center></pre></bdo></b><th id='4tvwx'></th></span></q></dt></tr></i><div id='4tvwx'><tfoot id='4tvwx'></tfoot><dl id='4tvwx'><fieldset id='4tvwx'></fieldset></dl></div>

        <small id='4tvwx'></small><noframes id='4tvwx'>

      1. <legend id='4tvwx'><style id='4tvwx'><dir id='4tvwx'><q id='4tvwx'></q></dir></style></legend>

        Python 进程操作之进程间通过队列共享数据,队列Queue简单示例

        时间:2023-12-16

        1. <i id='ccumZ'><tr id='ccumZ'><dt id='ccumZ'><q id='ccumZ'><span id='ccumZ'><b id='ccumZ'><form id='ccumZ'><ins id='ccumZ'></ins><ul id='ccumZ'></ul><sub id='ccumZ'></sub></form><legend id='ccumZ'></legend><bdo id='ccumZ'><pre id='ccumZ'><center id='ccumZ'></center></pre></bdo></b><th id='ccumZ'></th></span></q></dt></tr></i><div id='ccumZ'><tfoot id='ccumZ'></tfoot><dl id='ccumZ'><fieldset id='ccumZ'></fieldset></dl></div>
                <tbody id='ccumZ'></tbody>

              <small id='ccumZ'></small><noframes id='ccumZ'>

              • <bdo id='ccumZ'></bdo><ul id='ccumZ'></ul>
                • <legend id='ccumZ'><style id='ccumZ'><dir id='ccumZ'><q id='ccumZ'></q></dir></style></legend><tfoot id='ccumZ'></tfoot>

                  Python 进程操作之进程间通过队列共享数据,队列Queue简单示例

                  什么是Queue

                  Python中的Queue模块提供了多种多样的队列实现。队列类对象的主要操作包括 put、get、qsize和empty等。为了实现进程之间的同步,Queue模块提供了一个Queue的类。

                  Queue类是一个同步队列,用于在python多线程编程时在多个线程之间传递任务。它特别适用于一些生产者-消费者场景。

                  Queue.put(item[, block[, timeout]])

                  将 item 放入队列中。参数 block 默认值为 True。如果block使用默认值,且没有设置timeout(单位秒),则在队列有空间之前程序将暂停。

                  Queue.get([block[, timeout]])

                  移除并返回队列头部的一个元素。参数 block 和timeout 的含义与put() 方法的一样。

                  队列共享数据示例

                  在这个示例中,我们将创建两个进程来往一个队列中发送消息,在进程之间共享队列数据。

                  from multiprocessing import Process, Queue
                  
                  def producer(q):
                      for i in range(10):
                          q.put(i)
                  
                  def consumer(q):
                      while not q.empty():
                          item = q.get()
                          print(item)
                  
                  def main():
                      q = Queue()
                      producer_p = Process(target=producer, args=(q,))
                      consumer_p = Process(target=consumer, args=(q,))
                  
                      producer_p.start()
                      consumer_p.start()
                  
                      producer_p.join()
                      consumer_p.join()
                  
                  if __name__ == '__main__':
                      main()
                  

                  在上述代码中,我们使用了multiprocessing.Queue模块创建了一个队列,然后创建了两个进程,分别作为生产者和消费者,往队列中添加和获取数据。

                  改进的队列共享数据示例

                  再来看一个例子,这个例子中,我们将消息和使用该消息的进程的PID一起发送到队列中。消费者取出队列数据后,将消息和PID打印到控制台上。

                  import os
                  from multiprocessing import Process, Queue
                  
                  def producer(q):
                      for i in range(10):
                          pid = os.getpid()
                          message = f"Message:{i} from process:{pid}"
                          q.put((pid, message))
                  
                  def consumer(q):
                      while not q.empty():
                          pid, data = q.get()
                          print(f"Process {pid} get message: {data}")
                  
                  def main():
                      q = Queue()
                      producer_p = Process(target=producer, args=(q,))
                      consumer_p = Process(target=consumer, args=(q,))
                  
                      producer_p.start()
                      consumer_p.start()
                  
                      producer_p.join()
                      consumer_p.join()
                  
                  if __name__ == '__main__':
                      main()
                  

                  在这个示例中,我们先获取了当前进程的PID,然后将消息和PID一同打包成一个元组,放到队列中。在消费者中,我们先从队列中取出元组,然后将元组分成PID和消息两部分,打印到控制台上。

                  这个示例向我们展示了如何在队列中将多个值打包在一起,以及如何在消费者中解包。这样可以大大提高队列操作的灵活性。

                  上一篇:python图片指定区域替换img.paste函数的使用 下一篇:python主线程与子线程的结束顺序实例解析

                  相关文章

                  <legend id='dEE2y'><style id='dEE2y'><dir id='dEE2y'><q id='dEE2y'></q></dir></style></legend>

                  <small id='dEE2y'></small><noframes id='dEE2y'>

                    • <bdo id='dEE2y'></bdo><ul id='dEE2y'></ul>

                    1. <i id='dEE2y'><tr id='dEE2y'><dt id='dEE2y'><q id='dEE2y'><span id='dEE2y'><b id='dEE2y'><form id='dEE2y'><ins id='dEE2y'></ins><ul id='dEE2y'></ul><sub id='dEE2y'></sub></form><legend id='dEE2y'></legend><bdo id='dEE2y'><pre id='dEE2y'><center id='dEE2y'></center></pre></bdo></b><th id='dEE2y'></th></span></q></dt></tr></i><div id='dEE2y'><tfoot id='dEE2y'></tfoot><dl id='dEE2y'><fieldset id='dEE2y'></fieldset></dl></div>

                      <tfoot id='dEE2y'></tfoot>