协程简介

又称为微进程,纤程。非抢占式使用资源。

优点

优点1:

协程极高的执行效率。因为子程序切换不是纤程切换,而是由程序自身控制,因此,没有纤程切换的开销,和多线程对比,纤程数量越多,协程的性能优势就越明显。

优点2:

不需要多线程的锁机制,因为只有一个线程,也不存在同事写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。

用途

多线程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的新能

协程切换

#-*- coding:utf-8 -*-

from greenlet import greenlet

def test1():

print(12)

gr2.switch() #切换对象切换到 [gr2] 对象

print(34)

gr2.switch()

def test2():

print(56)

gr1.switch() #切换对象切换到 [gr1] 对象

print(78)

gr1 = greenlet(test1) # test1 函数的协程对象 gr1

gr2 = greenlet(test2) # test2 函数的协程对象 gr2

gr2.switch()

56

12

78

gevent模块协程测试

单线程执行爬虫测试

#-*- coding:utf-8 -*-

import requests,gevent,time

start = time.time()

def f(url):

print("GET:%s" % url)

resp = requests.get(url) #获取URL

data = resp.text #URL中的数据

print("%s 的文件大小为%s"%(url,len(data))) #计算大小

f('http://www.python.org')

f('https://www.centos.org//')

f('http://zhaojunhui.cn/')

f('http://www.taobao.com/')

f('http://www.jd.com/')

f('http://www.sdo.com/')

print("运行时间",time.time() - start)

GET:http://www.python.org

http://www.python.org 的文件大小为48758

GET:https://www.centos.org//

https://www.centos.org// 的文件大小为20842

GET:http://zhaojunhui.cn/

http://zhaojunhui.cn/ 的文件大小为714

GET:http://www.taobao.com/

http://www.taobao.com/ 的文件大小为132353

GET:http://www.jd.com/

http://www.jd.com/ 的文件大小为122571

GET:http://www.sdo.com/

http://www.sdo.com/ 的文件大小为12383

运行时间 3.820824384689331

gevent模块多线程协程测试[内容越多效果越明显]

#-*- coding:utf-8 -*-

import requests,gevent,time

start = time.time()

def f(url):

print("GET:%s" % url)

resp = requests.get(url) #获取URL

data = resp.text #URL中的数据

print("%s 的文件大小为%s"%(url,len(data))) #计算大小

gevent.joinall([

gevent.spawn(f,"http://www.python.org"),

gevent.spawn(f,"https://www.centos.org/"),

gevent.spawn(f,"http://www.zhaojunhui.cn"),

gevent.spawn(f,"http://www.taobao.com"),

gevent.spawn(f,"http://www.jd.com"),

gevent.spawn(f,'http://www.sdo.com/')

])

print("运行时间",time.time() - start)

GET:http://www.python.org

http://www.python.org 的文件大小为48758

GET:https://www.centos.org/

https://www.centos.org/ 的文件大小为20842

GET:http://www.zhaojunhui.cn

http://www.zhaojunhui.cn 的文件大小为714

GET:http://www.taobao.com

http://www.taobao.com 的文件大小为132353

GET:http://www.jd.com

http://www.jd.com 的文件大小为122571

GET:http://www.sdo.com/

http://www.sdo.com/ 的文件大小为12383

运行时间 3.0470935821533203

python3 gui协程_Python3进阶-协程相关推荐

  1. python3 gui tk代码_python3 修改计算机名称GUI程序

    from tkinter import * from tkinter import messagebox import tkinter import winreg import os def serc ...

  2. python 协程和异步的关系_python协程与异步协程

    在前面几个博客中我们一一对应解决了消费者消费的速度跟不上生产者,浪费我们大量的时间去等待的问题,在这里,针对业务逻辑比较耗时间的问题,我们还有除了多进程之外更优的解决方式,那就是协程和异步协程.在引入 ...

  3. python 协程_Python 协程与 Go 协程的区别(一)

    ? "Python猫" ,一个值得加星标的公众号 花下猫语:年关将近,不知各位过得怎样?我最近有些忙,收获也挺多,以后有机会分享下.吃饭时间,追了两部剧<了不起的麦瑟尔夫人& ...

  4. python 协程可以嵌套协程吗_Python线程、协程探究(2)——揭开协程的神秘面纱...

    一.上集回顾 在上一篇中我们主要研究了python的多线程困境,发现多核情况下由于GIL的存在,python的多线程程序无法发挥多线程该有的并行威力.在文章的结尾,我们提出如下需求: 既然python ...

  5. unity update 协程_Unity协程,停止协程及yield return使用_019

    public void Start() { //开启协程 Coroutine testCoroutine = StartCoroutine(Test()); //停止指定协程 StopCoroutin ...

  6. python 协程可以嵌套协程吗_Python | 详解Python中的协程,为什么说它的底层是生成器?...

    今天是Python专题的第26篇文章,我们来聊聊Python当中的协程. 我们曾经在golang关于goroutine的文章当中简单介绍过协程的概念,我们再来简单review一下.协程又称为是微线程, ...

  7. python携程多核_python 协程

    最近对Python中的协程挺感兴趣,这里记录对协程的个人理解. 要理解协程,首先需要知道生成器是什么.生成器其实就是不断产出值的函数,只不过在函数中需要使用yield这一个关键词将值产出.下面来看一个 ...

  8. python 协程可以嵌套协程吗_Python学习后有哪些方向可以选择?Python有什么好的学习方法吗?(附教程)...

    随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 如果你是零基 ...

  9. Go 知识点(14) — Go 多协程(单个协程触发panic会导致其它所有协程挂掉,每个协程只能捕获到自己的 panic 不能捕获其它协程)

    在多协程并发环境下,我们常常会碰到以下两个问题.假设我们现在有 2 个协程,我们叫它们协程 A 和 B . [问题1]如果协程 A 发生了 panic ,协程 B 是否会因为协程 A 的 panic ...

最新文章

  1. 【数据结构】链式队列的实现(C语言)
  2. 目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军)
  3. 编程小白 第一本 python_【Python】编程小白的第一本python(基础中的基础)
  4. 管理者如何提升下属执行力---视频学习记录
  5. ASP.NET Core 中使用IHttpClientFactory发出HTTP请求
  6. Detection of Extraterrestrial KMP匹配 重复k次子串 好题
  7. 1466C. Canine poetry
  8. html(+css)/01/html语言基础,标记,标记语法,html文档结构
  9. PowerPivot 和 SQL Azure 快速入门
  10. 这些面试机会,你该主动放弃!
  11. number string java_java基础系列(一):Number,Character和String类及操作
  12. OpenMP中的常用函数
  13. python运行代码无反应_linux执行python命令后没有反应,不打印日志信息
  14. 什么叫工业4.0,这篇接地气的文章终于讲懂了
  15. 大大方方补肾,平平常常做人 - 肾虚的症状和治疗
  16. 1.11CSS的基本语法
  17. c语言笔记本电脑排行,2020~2021笔记本电脑推荐(华为篇)
  18. 20种洛杉矶天使之城电影luts调色预设
  19. libsvm使用matlab训练为空,新人急:使用libsvm中的函数=svmpredict预测输出为空。
  20. 【科创人上海行】扶墙老师王福强:架构师创业要突破思维局限,技术人创业的三种模式,健康第一...

热门文章

  1. shell 生活0806012145
  2. WordPress忘记密码的5种解决方法
  3. leetcode393. UTF-8 Validation
  4. ELK 分析 nginx access 日志
  5. Ubuntu上安装Robomongo及添加到启动器
  6. Hadoop源代码分析(MapReduce概论)
  7. iOS开发-自定义UIAlterView(iOS 7)
  8. Maven排除项目中同名不同版本的jar
  9. PullToRefresh
  10. Facebook图片存储架构技术全解析