python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例
来源:互联网 发布:国际象棋软件哪个好 编辑:程序博客网 时间:2024/05/20 06:27
本文简单介绍python进程模块multiprocessing提供的进程池和线程池功能。
进程池:
进程池的使用有四种方式:apply_async、apply、map_async、map。其中apply_async和map_async是异步的,也就是启动进程函数之后会继续执行后续的代码不用等待进程函数返回。apply_async和map_async方式提供了一写获取进程函数状态的函数:ready()、successful()、get()。
PS:join()语句要放在close()语句后面。
实例代码如下:
# -*- coding: utf-8 -*-import multiprocessingimport timedef func(msg): print('msg: ', msg) time.sleep(1) print('********') return 'func_return: %s' % msgif __name__ == '__main__': # apply_async print('\n--------apply_async------------') pool = multiprocessing.Pool(processes=4) results = [] for i in range(10): msg = 'hello world %d' % i result = pool.apply_async(func, (msg, )) results.append(result) print('apply_async: 不堵塞') for i in results: i.wait() # 等待进程函数执行完毕 for i in results: if i.ready(): # 进程函数是否已经启动了 if i.successful(): # 进程函数是否执行成功 print(i.get()) # 进程函数返回值 # apply print('\n--------apply------------') pool = multiprocessing.Pool(processes=4) results = [] for i in range(10): msg = 'hello world %d' % i result = pool.apply(func, (msg,)) results.append(result) print('apply: 堵塞') # 执行完func才执行该句 pool.close() pool.join() # join语句要放在close之后 print(results) # map print('\n--------map------------') args = [1, 2, 4, 5, 7, 8] pool = multiprocessing.Pool(processes=5) return_data = pool.map(func, args) print('堵塞') # 执行完func才执行该句 pool.close() pool.join() # join语句要放在close之后 print(return_data) # map_async print('\n--------map_async------------') pool = multiprocessing.Pool(processes=5) result = pool.map_async(func, args) print('ready: ', result.ready()) print('不堵塞') result.wait() # 等待所有进程函数执行完毕 if result.ready(): # 进程函数是否已经启动了 if result.successful(): # 进程函数是否执行成功 print(result.get()) # 进程函数返回值
线程池:
线程池的使用方式和进程池类似。
实例代码如下:
# -*- coding: utf-8 -*-from multiprocessing.dummy import Pool as ThreadPoolimport timedef fun(msg): print('msg: ', msg) time.sleep(1) print('********') return 'fun_return %s' % msg# map_asyncprint('\n------map_async-------')arg = [1, 2, 10, 11, 18]async_pool = ThreadPool(processes=4)result = async_pool.map_async(fun, arg)print(result.ready()) # 线程函数是否已经启动了print('map_async: 不堵塞')result.wait() # 等待所有线程函数执行完毕print('after wait')if result.ready(): # 线程函数是否已经启动了 if result.successful(): # 线程函数是否执行成功 print(result.get()) # 线程函数返回值# mapprint('\n------map-------')arg = [3, 5, 11, 19, 12]pool = ThreadPool(processes=3)return_list = pool.map(fun, arg)print('map: 堵塞')pool.close()pool.join()print(return_list)# apply_asyncprint('\n------apply_async-------')async_pool = ThreadPool(processes=4)results =[]for i in range(5): msg = 'msg: %d' % i result = async_pool.apply_async(fun, (msg, )) results.append(result)print('apply_async: 不堵塞')# async_pool.close()# async_pool.join()for i in results: i.wait() # 等待线程函数执行完毕for i in results: if i.ready(): # 线程函数是否已经启动了 if i.successful(): # 线程函数是否执行成功 print(i.get()) # 线程函数返回值# applyprint('\n------apply-------')pool = ThreadPool(processes=4)results =[]for i in range(5): msg = 'msg: %d' % i result = pool.apply(fun, (msg, )) results.append(result)print('apply: 堵塞')print(results)
1 0
- python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例
- python进程池:multiprocessing.pool
- python进程池:multiprocessing.pool
- python进程池:multiprocessing.pool
- python进程池:multiprocessing.pool
- python进程池:multiprocessing.pool
- multiprocessing 进程池 pool
- python multiprocessing dummy Pool 使用
- 【Python】python进程池:multiprocessing.pool
- Python多进程multiprocessing.Pool()
- 多进程multiprocessing-进程池Pool
- Python通过上下文管理器使用进程池multiprocessing.Pool
- python之multiprocessing.pool
- Python-multiprocessing-Pool模块
- Python 多进程 multiprocessing.Pool类详解
- Python 多进程 multiprocessing Pool 坑
- Python 多进程 multiprocessing.Pool类详解
- python 多进程 —— multiprocessing.Pool
- php使用fastcgi协议与php-fpm通信
- 关于SIGPIPE导致的程序退出
- 感知机
- 《Android源码设计模式解析与实战》读书笔记(十一)——命令模式
- iFunk执政官游戏本,不仅仅是游戏本
- python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例
- FIO组数据测试脚本
- Lomper 每天进步一点点~~ QT学习之QString的arg方法
- 异步任务AsyncTask的简单理解
- 算法导论 红黑树(附带黑高度)
- 手把手教你申请邓白氏编码
- Android 搜索页-搜索历史条目动态添加(LinearLayout动态添加条目)
- 快速安装node环境: n
- mongodb的一些命令操作