python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例
进程池:
# -*- coding: utf-8 -*- import multiprocessing
import time def func(msg):
print('msg: ', msg)
time.sleep(1)
print('********')
return 'func_return: %s' % msg if __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 ThreadPool
import time def fun(msg):
print('msg: ', msg)
time.sleep(1)
print('********')
return 'fun_return %s' % msg # map_async
print('\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()) # 线程函数返回值 # map
print('\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_async
print('\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()) # 线程函数返回值 # apply
print('\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)
计算多的用多进程
io多的用多线程
python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例的更多相关文章
- python第十一天-----补:线程池
低版本: #!/usr/bin/env python import threading import time import queue class TreadPool: ""&q ...
- python(13)多线程:线程池,threading
python 多进程:多进程 先上代码: pool = threadpool.ThreadPool(10) #建立线程池,控制线程数量为10 reqs = threadpool.makeRequest ...
- java多线程系类:JUC线程池:03之线程池原理(二)(转)
概要 在前面一章"Java多线程系列--"JUC线程池"02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明.内容包 ...
- java多线程系类:JUC线程池:01之线程池架构
概要 前面分别介绍了"Java多线程基础"."JUC原子类"和"JUC锁".本章介绍JUC的最后一部分的内容--线程池.内容包括:线程池架构 ...
- (转)WebSphere 中池资源调优 - 线程池、连接池和 ORB
WebSphere 中池资源调优 - 线程池.连接池和 ORB 来自:https://www.ibm.com/developerworks/cn/websphere/library/techartic ...
- 线程池;java的线程池的实现原理;适用于频繁互动(如电商网站)
线程池是一种多线程处理形式,处理过程中将任务加入到队列,然后在创建线程后自己主动启动这些任务.线程池线程都是后台线程.每一个线程都使用默认的堆栈大小,以默认的优先级执行.并处于多线程单元中. 假设某个 ...
- java多线程系类:JUC线程池:02之线程池原理(一)
在上一章"Java多线程系列--"JUC线程池"01之 线程池架构"中,我们了解了线程池的架构.线程池的实现类是ThreadPoolExecutor类.本章,我 ...
- java多线程、线程池及Spring配置线程池详解
1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源.2.java中简单的实现多线程的方式 继承Thread ...
- juc线程池原理(四): 线程池状态介绍
<Thread之一:线程生命周期及五种状态> <juc线程池原理(四): 线程池状态介绍> 线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态.线程池也有5种状态 ...
- 你创建线程池最好分为两种线程池,io密集型线程池,或者cpu密集型线程池
你创建线程池最好分为两种线程池,io密集型线程池,或者cpu密集型线程池. 否则,如果只用一个线程池的话,不管是iO密集的线程,或者cpu消耗大的都放在同一个线程池的话,会发生线程池被撑满的情况
随机推荐
- .Net 接入CAS 遇到的坑
关于CAS是个什么东西,就不多闲扯了,相信每个有过SSO经验的都听过CAS大名,百度百科地址: https://baike.baidu.com/item/CAS/1329561?fr=aladdin ...
- [Linux] awk基础编程
1.awk每次读一行数据,如果设置了-F选项,是在这一行使用分隔符分,$0是全部 2.awk由模式和动作组成 3.条件判断模式{动作} a.txt aaa bbb aaa ccc ddd cat a. ...
- Mysql启动时执行文件init-file的使用
可以在配置文件里指定mysql启动以后初始执行的SQL文件, 其语法是: 在[mysqld]下指定: init-file="D:/mysql/test.sql", 后面为具体的s ...
- Spring Boot入门-快速搭建web项目
Spring Boot 概述: Spring Boot makes it easy to create stand-alone, production-grade Spring based Appli ...
- 轻松搞定RocketMQ入门
RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RocketMQ网络 ...
- spring mvc 启动过程及源码分析
由于公司开源框架选用的spring+spring mvc + mybatis.使用这些框架,网上都有现成的案例:需要那些配置文件.每种类型的配置文件的节点该如何书写等等.如果只是需要项目能够跑起来,只 ...
- HTML和CSS前端教程05-CSS盒模型
目录 1. CSS盒模型 1.1 元素的尺寸 1.2. 元素内边距 padding 1.3. 元素外边距 margin 1.4. 处理溢出overflow 1.5. 元素的可见性Visibility ...
- AngularJS处理服务器端返回的JSON数据的格式问题
用ng的$http服务发起ajax请求,php返回的JSON数据格式要正确! 一开始我的php页面是这样返回数据的: if($result){ $oid = mysqli_insert_id($con ...
- linux命令df中df -h和df -i
df 命令: linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [ ...
- linux初学者常用必备命令整理
Linux命令学习 1.文件&目录处理 ls -a 全部文件 -l 详细信息 -r 递归显示子目录结构 ls -al 相当于 ls -a -l cd ..上级目录 .当前目录 ~家目录 cd ...