上一篇文章主要介绍了多任务场景下单线程异步、多线程、多进程如何选择,链接:多任务场景下单线程异步多线程多进程
这里主要通过三个实例去验证一下简单的多任务场景下,三种方式的耗时情况,假设有10个互不关联的10个任务

'''''''''
多进程版本:
使用多进程,时间比多线程更慢,为什么?因为创建进程的成本是要比线程高的,
虽然,它可以利用多核CPU的优势,但是在这里,用不上,就好比杀鸡用牛刀一样,大材小用,还提高了成本。
'''''''''import time
import multiprocessingfrom logger import Logger
logger = Logger("multiProcess").get_log()def processTask(t):logger.info("任务开始:%s", t)time.sleep(1)logger.info('任务耗时1秒钟')if __name__=='__main__':t3 = time.time()processes = [multiprocessing.Process(target = processTask, args=(t,)) for t in range(0, 10)]for p in processes:p.start()for p in processes:p.join()logger.info("总共耗时:%s ", time.time() - t3)

总共耗时:1.9219999313354492,运行截图:

'''''''''
多线程版本:
5个线程各负责一个任务,全部完成最后只花了1秒多一点时间,所以,对于阻塞性任务,例如IO密集型任务,
即使有GIL,还是能发挥多线程的作用的,毕竟,时间花在IO等待上,如果是CPU密集型任务效果不大。
'''''''''import time
import threadingfrom logger import Logger
logger = Logger("multiThread").get_log()def  multiTask(t):logger.info("任务开始:%s", t)time.sleep(1)logger.info('任务耗时1秒钟')def main():threads = [threading.Thread(target = multiTask,args=(t,)) for t in range(0,10)]for t in threads:t.start()for t in threads:t.join()if __name__ == '__main__':t1 = time.time()main()logger.info("总共耗时:%s ",time.time()-t1)

总共耗时:1.003000020980835,运行截图:

'''''''''
单线程异步模型:
发现使用asyncio所的时间与多线程几乎一致。尽管它是单线程,但因为它没有多线程和进程的创建成本,
就是在单线程环境下,切换任务,当这个任务被阻塞时,立刻切换其他任务,当前面的任务完成时,在通知它。
'''''''''import asyncio
import timefrom logger import Logger
logger = Logger("asyncSingleThread").get_log()async def singleTask(t):logger.info("任务开始:%s",t)await asyncio.sleep(1)logger.info('任务耗时1秒钟')async def main(loop):tasks = [loop.create_task(singleTask(t)) for t in range(0, 10)]await asyncio.wait(tasks)t4 = time.time()
loop = asyncio.get_event_loop()  # 建立 loop
loop.run_until_complete(main(loop))  # 执行 loop
loop.close()  # 关闭 loop
logger.info("总共耗时:%s ", time.time() - t4)

总共耗时:1.0079998970031738 ,运行截图:

【Python】单线程异步多线程多进程实例相关推荐

  1. 多任务场景下单线程异步多线程多进程

    多任务的场景:1.爬取不同url的内容,爬取同一个url分页内容.比如:豆瓣图书 Top 250 https://book.douban.com/top250?start=0 实现豆瓣图书Top250 ...

  2. Python单线程、多线程、多进程运行效率评测对比

    近日用python做图像处理,涉及到推拉流使用了python的多进程机制,结果导致程序运行效率大大下降,后来在反复试验中又发现子进程的速度比主进程快很多,特地做此测评.先上结论 评测结果 程序运行速度 ...

  3. Python——单线程与多线程

    并发:一个人吃,一口菜一口包子,但由于切换速度快,感觉像在同时吃菜和包子 并行:两个人同时吃,一个人吃包子,一个吃菜,所有吃包子和吃菜是同时的.同步:并发或并行的各个任务不是独自运行的任务之间有一定的 ...

  4. python 单线程和多线程

    单线程, 在好些年前的MS-DOS时代,操作系统处理问题都是单任务的,我想做听音乐和看电影两件事儿,那么一定要先排一下顺序. #coding=utf-8 import threading from t ...

  5. python 单线程与多线程爬虫

    帮别人写爬虫,先是单线程,太慢,改了多线程 1.单线程 import urllib import urllib.request import requests import xlwt import r ...

  6. python单线程和多线程的区别

    多线程与单线程的区别 1.生活举例 你早上上班,正要打卡的时候,手机响了..你如果先接了电话,等接完了,在打卡,就是单线程. 如果你一手接电话,一手打卡.就是多线程,2件事的结果是一样的..你接了电话 ...

  7. Python多线程多进程、异步、异常处理等高级用法

    文章目录 前言 多线程多进程 多线程 多进程 协程 总结 异步 基本概念 异步编程 asyncio aiohttp 异常 常见异常 异常处理 自定义异常 lambda表达式 lambda表达式用法 高 ...

  8. python:一文搞懂多线程,多进程,异步协程的使用场景

    本文将使用场景化为案例,将单线程,多线程,多进程,异步协程的速度进行对比 对比速度时,   >表示 速度快于  >>表示速度远快于  =表示速度差不多 >>>> ...

  9. Python爬虫:单线程、多线程和协程的爬虫性能对比!异步才是永远滴神!

    然后今天我要给大家分享的是如何爬取豆瓣上深圳近期即将上映的电影影讯,并分别用普通的单线程.多线程和协程来爬取,从而对比单线程.多线程和协程在网络爬虫中的性能. 具体要爬的网址是:https://mov ...

最新文章

  1. android SurfaceView
  2. 成功解决attrs = config.__dict__['__flags'] KeyError: '__flags
  3. Python的模块化编程
  4. Content Provider之一大菊观
  5. 学习笔记(31):Python网络编程并发编程-定时器
  6. 51nod1227-平均最小公倍数【杜教筛,欧拉函数】
  7. JS 数组 各项操作
  8. 判定是否过拟合、欠拟合的一种方式
  9. 深度 | EB级规模大数据平台核心技术揭秘(上)
  10. Linux chmod 修改多个文件权限
  11. PLC通讯实现-C#实现欧姆龙以太网通讯FINS UDP(三)
  12. 正态分布是离散分布还是连续分布_什么是正态分布?知道它有什么用?
  13. #Paper Reading# Stochastic Optimization of Sorting Networks via Continuous Relaxations
  14. UART SPI I2C 接口介绍 转载
  15. 网络存储技术Windows server 2012(项目三 存储池的配置与管理)
  16. 设计分享|基于单片机的跑马灯
  17. Android-绝对音量和相对音量设置
  18. 记一次在VMware中安装黑苹果的经历
  19. PHP网站配置(系统设置)数据库表结构及实现
  20. 编程求a+aa+aaa+aa…a(n个a)之和

热门文章

  1. php编写六十甲子纳音表_六十甲子纳音表详细说明,看看你属于什么命,属于那个颜色...
  2. python元组赋值给变量,Python的赋值
  3. svn中项目管理中ec_Mac中使用svn进行项目管理
  4. java内部类练习题,学习笔记——Java内部类练习题
  5. matlab如何读取csv,Matlab:如何读取CSV文件以及如何读取带有字符串数据项的CSV文件 | 学步园...
  6. Java多线程 —— 线程状态迁移
  7. 双剑合璧————Spring Boot + Mybatis Plus
  8. carsim中质心加速度_振动CAE分析在空调压缩机支架设计中的应用
  9. Android studio下载安装使用遇到的问题及解决办法
  10. HTML+CSS+JS实现 ❤️ html5响应式图片轮播❤️