Python 多进程进程池Queue进程通信

from multiprocessing import Pool,Manager
import time

def hanshu(queue,a):
    n = 1
    while n<50:
        # print(‘\r正在工作%d‘%a,end=‘‘)
        n+=1
        # 【步骤3】往队列中发送一条消息
        queue.put(a)
        time.sleep(2)

def main():
    print(‘执行main函数‘)
    for i in range(0,10):
        po.apply_async(hanshu,args=(q,i)) # 【步骤2】向进程池中添加任务,hanshu是做任务的函数,(i,)是传参,是个元组 q是队列

if __name__ == ‘__main__‘:
    q=Manager().Queue() #使用Manager中的Queue方法 【步骤1】创建一个队列
    po = Pool(10) # 创建进程池 并限定最多同时运行10个进程
    main()
    print(‘---start-----‘)

    po.close() # 关闭进程池不再接受新的进程任务
    # po.join() #等待进程池里面的任务完成
    while True:
        name=q.get()
        print(‘\r收到消息 与任务不堵塞‘,name ,end=‘‘)

原文地址:https://www.cnblogs.com/zhangdingqu/p/9829495.html

时间: 2024-10-09 00:45:34

Python 多进程进程池Queue进程通信的相关文章

Python使用进程池管理进程和进程间通信

与线程池类似的是,如果程序需要启动多个进程,也可以使用进程池来管理进程.程序可以通过 multiprocessing 模块的 Pool() 函数创建进程池,进程池实际上是 multiprocessing.pool.Pool 类. 进程池具有如下常用方法: 1.apply(func[, args[, kwds]]):将 func 函数提交给进程池处理.其中 args 代表传给 func 的位置参数,kwds 代表传给 func 的关键字参数.该方法会被阻塞直到 func 函数执行完成. 2.app

PYTHON多进程编码结束之进程池POOL

结束昨晚开始的测试. 最后一个POOL. A,使用POOL的返回结果 #coding: utf-8 import multiprocessing import time def func(msg): print 'msg:', msg time.sleep(3) print 'end' return 'done', msg if __name__ == '__main__': pool = multiprocessing.Pool(processes=3) result = [] for i i

python:多进程,多进程队列,多进程管道,Manager,进程锁,进程池

#!usr/bin/env python# -*- coding:utf-8 -*- __author__ = "Samson" import multiprocessingimport time def run(name): time.sleep(2) print("process start...%s" % name)if __name__ == "__main__": for i in range(10): p = multiprocess

第35篇 进程之间的通信 Queue Pipe 进程池Pool,p.apply()方法,p.apply_async()方法

内容大纲: 进程之间的通讯 进程队列 管道 进程之间的数据共享 进程池 使用进程池 开启进程 提交任务 获得返回值 回调函数1.进程队列 先进先出 from multiprocessing import Queue import queue q = Queue() q.put(1) q.put(2) q.put(3) print(q.get()) print(q.get()) print(q.get()) 1 2 3 from multiprocessing import Queue impor

Python--线程队列(queue)、multiprocessing模块(进程对列Queue、管道(pipe)、进程池)、协程

队列(queue) 队列只在多线程里有意义,是一种线程安全的数据结构. get与put方法 ''' 创建一个"队列"对象 import queue q = queue.Queue(maxsize = 10) queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的可选参数maxsize来设定队列长度.如果maxsize小于1就表示队列长度无限. 将一个值放入队列中: q.put() 调用队列对象的put()方法在队尾插入一个项目.put()

Python开发基础--- 进程间通信、进程池、协程

进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程queue的生成是用multiprocessing模块生成的. 在生成子进程的时候,会将代码拷贝到子进程中执行一遍,及子进程拥有和主进程内容一样的不同的名称空间. 示例1: 1 import multiprocessing 2 def foo(): 3 q.put([11,'hello',True]

python基础之进程间通信、进程池、协程

进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程queue的生成是用multiprocessing模块生成的. 在生成子进程的时候,会将代码拷贝到子进程中执行一遍,及子进程拥有和主进程内容一样的不同的名称空间. 示例1: 1 import multiprocessing 2 def foo(): 3 q.put([11,'hello',True]

Python、进程间通信、进程池、协程

进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程queue的生成是用multiprocessing模块生成的. 在生成子进程的时候,会将代码拷贝到子进程中执行一遍,及子进程拥有和主进程内容一样的不同的名称空间. 示例1: 1 import multiprocessing 2 def foo(): 3 q.put([11,'hello',True]

第36篇 多进程的数据共享,进程池的回调函数,线程 什么是GIL锁,Threading模块记

内容概览: 进程 数据共享 进程池--回调函数 线程 线程的基础理论 什么是线程? 线程与进程的关系 GIL锁 线程的开启: Threading模块1,用多进程开启socket创建聊天 server端写了input函数会报错?因为服务器是高速运行的,自动化的为来访问的客户端提供服务, 不可能停下来等待管理员的输入,然后发送给客户.这就失去了自动化的意义. 2,进程池Pool()方法创建的进程,map()方法是否有返回值? p.map()得到的是迭代对象 import time from mult