python 进程和线程(2)
这篇博客是按照博客《进程和线程(1)》中内容用futures改写 with futures.ProcessPoolExecutor() as executor:可以两篇博客对照看。
2改写
from multiprocessing import Pool
from time import sleep
from concurrent import futures
def f(x):
return x*x
def speak(word):
for i in range(3):
print('i am speak:',word,i)
if __name__=='__main__':
x=[1,2,3]
speak(x)
with futures.ProcessPoolExecutor() as executor:
print(list(executor.map(f,x)))
print(type(executor.map(f,x)))
# i am speak: [1, 2, 3] 0
# i am speak: [1, 2, 3] 1
# i am speak: [1, 2, 3] 2
# [1, 4, 9]
# <class 'generator'>
2.1.2改写
from multiprocessing import Pool,Process
import time
from concurrent import futures
def f(x):
time.sleep(2)
print(x*x)
return x*x
def speak(word):
for i in range(3):
print('i am speak:',word,i)
time.sleep(2)
if __name__=='__main__':
startTime=time.time()
x=[1,2,3]
# for i in x:
# p=Process(target=f,args=(i,))
# p.start()
# endTimeSub=time.time()
# print('usetimesub',endTimeSub-startTime)
with futures.ProcessPoolExecutor() as executor:
executor.map(f,x)
endTimeSub=time.time()
print('usetimesub',endTimeSub-startTime)
endTimeMain=time.time()
print('useTime',endTimeMain-startTime)
# usetimesub 0.1450958251953125
#
#
#
# useTime 2.2364883422851562
在上面改写基础上,如果在子进程中停顿3s,看看结果怎么样?
from multiprocessing import Pool,Process
import time
from concurrent import futures
def f(x):
time.sleep(2)
print(x*x)
return x*x
def speak(word):
for i in range(3):
print('i am speak:',word,i)
time.sleep(2)
if __name__=='__main__':
startTime=time.time()
x=[1,2,3]
# for i in x:
# p=Process(target=f,args=(i,))
# p.start()
# endTimeSub=time.time()
# print('usetimesub',endTimeSub-startTime)
with futures.ProcessPoolExecutor() as executor:
executor.map(f,x)
endTimeSub=time.time()
time.sleep(3)
print('usetimesub',endTimeSub-startTime)
endTimeMain=time.time()
print('useTime',endTimeMain-startTime)
#
#
#
# usetimesub 0.1621077060699463
# useTime 3.2041215896606445
可见:1、总使用只时间增加了1s左右;2、主程序没有继续往下走,先等子进程全部执行完再往下走,useTime都是在最后,直接使用p=Process(target=f,args=(i,)),则是新开一个子进程,主进程继续往下走,注意两者区别;3、比较两者执行时间
python 进程和线程(2)的更多相关文章
- python 进程和线程
python中的进程.线程(threading.multiprocessing.Queue.subprocess) Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就 ...
- Python进程、线程、协程
进程和线程的解释 进程(process)和线程(thread)是操作系统的基本概念,计算机的核心是CPU,它承担了所有的计算任务: 单个CPU一次只能运行一个任务,代表单个CPU总是运行一个进程,其他 ...
- python进程、线程、协程(转载)
python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资 ...
- Python进程和线程
引入进程和线程的概念及区别 1.线程的基本概念 概念 线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但 ...
- Python进程、线程、协程详解
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- python——进程、线程、协程
Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...
- Python进程与线程
进程与线程:*进程: 进程是系统中程序执行和资源分配的基本单元, 每个进程都有自己的数据段(存储数据).代码段(存储代码).堆栈段(对象和变量). # 全局变量等资源在多个进程中不能 ...
- python进程和线程(六)
协程 协程,又称微线程,纤程.英文名Coroutine.顾名思义,协程是协作式的,也就是非抢占式的程序(线程是抢占式的).协程的关键字是yield,一看到这个就想到了生成器对不对?那就顺便回顾一下生成 ...
- python 进程、线程与协程的区别
进程.线程与协程区别总结 - 1.进程是计算器最小资源分配单位 - 2.线程是CPU调度的最小单位 - 3.进程切换需要的资源很最大,效率很低 - 4.线程切换需要的资源一般,效率一般(当然了在不考虑 ...
- python进阶:Python进程、线程、队列、生产者/消费者模式、协程
一.进程和线程的基本理解 1.进程 程序是由指令和数据组成的,编译为二进制格式后在硬盘存储,程序启动的过程是将二进制数据加载进内存,这个启动了的程序就称作进程(可简单理解为进行中的程序).例如打开一个 ...
随机推荐
- 7.6 CLI 管理Varnish
./varnishd -f /usr/common/varnish/etc/varnish/ -a 测试: 代理tomcat服务器地址:http://172.20.10.5:1111/ telnet ...
- parameterType和resultType
在MyBatis中,我们通过parameterType完成输入映射(指将值映射到sql语句的占位符中,值的类型与dao层响应方法的参数类型一致),通过resultType完成输出映射(从数据库中输出, ...
- python 获取cpu、内存、硬盘等实时信息 psutil
psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(CPU,内存,磁盘,网络等)信息,主要应用于系统监控,分析和限制系统资源及进程的管理,它实现了同等命令行工具提供的功能,如ps, ...
- MongoDB 副本集搭建
搭建mongodb副本集 [root@ mongodb]# cd /u02 [root@ u02]# mkdir -p mongodb/data_2777 [root@ u02]# mkdir -p ...
- idea 将java 项目 打包成jar包
记录一下,防止忘记.ps : 请忽略这个是web项目 1.idea 打包jar包 (1)首先打开Project Structure,选中Artifacts (2)点击绿色加号,选中jar ,然后选中f ...
- 使用git提交远程仓库
git pull 更新 git add 文件名 将文件添加到暂存区 git commit -m ‘注释’ 提交 git push origin master 提交到远程仓库
- 前端安全之 XSS攻击
参看: XSS的原理分析与解剖 前端安全 -- XSS攻击 web大前端开发中一些常见的安全性问题 1.前言 XSS 是面试时,hr提出来给我的,然后大体的浏览一遍,今天才查阅资料大体了解了它. XS ...
- ES query does not support [auto_generate_synonyms_phrase_query]
测试环境使用 elasticsearch-rest-high-level-client 做为基础包发起es调用出现如下异常: {"error":{"root_caus ...
- Linux下录屏
我喜欢的: Gnome系用户,按ctrl+shift+alt+r,屏幕右上角有红点出现,开始录屏,结束的话再按一次ctrl+shift+alt+r,录好的视频在 ~/Videos下 ffmpeg # ...
- P 1025 链表反转
转跳点: