zoukankan      html  css  js  c++  java
  • python:协程

    #协程,又称为微线程,是一种用户态的轻量级线程
    #!usr/bin/env python
    # -*- coding:utf-8 -*-

    __author__ = "Samson"
    #greenlet是协程"手动挡切换"
    from greenlet import greenlet

    def test1():
    print(12)
    t2.switch()#切换到协程t2
    print(36)
    t2.switch()

    def test2():
    print(48)
    t1.switch()
    print(60)

    t1 = greenlet(test1)#启动一个协程
    t2 = greenlet(test2)

    t1.switch()



    #!usr/bin/env python
    # -*- coding:utf-8 -*-

    __author__ = "Samson"
    #greenlet是协程"自动挡切换"
    import gevent

    def foo():
    print("Running in foo")
    gevent.sleep(2)#模仿io操作
    print("Explicit context switch to foo again")


    def bar():
    print("Explicit精确的 context内容 to bar")
    gevent.sleep(1) # 模仿io操作
    print("Implicit context switch back to bar")

    gevent.joinall([
    gevent.spawn(foo),
    gevent.spawn(bar),
    ])


    协程之爬虫
    #!usr/bin/env python
    # -*- coding:utf-8 -*-

    __author__ = "Samson"

    from urllib import request
    import gevent,time
    from gevent import monkey

    monkey.patch_all()#将当前所有程序io操作单独做上标记,这样才能用协程方式进行爬虫,否则将会是串行的

    def f(url):
    print("Get: %s" %url)
    resp = request.urlopen(url)
    data = resp.read()
    print("%d bytes received from %s."%(len(data),url))

    urls = ["https://www.python.org/",
    "https://www.yahoo.com/",
    "https://github.com/"]
    time_start = time.time()
    for url in urls:
    f(url)
    print("同步cost",time.time()-time_start)

    async_time_start = time.time()
    gevent.joinall([
    gevent.spawn(f,"https://www.python.org/"),
    gevent.spawn(f,"https://www.yahoo.com/"),
    gevent.spawn(f,"https://github.com/"),
    ])
    print("协程cost",time.time()-async_time_start)


  • 相关阅读:
    一个合格的员工或者管理者是怎样炼成的
    关于找不到库文件
    dell md3200i mdss (企业管理) 安装的那点事儿(2)
    dell md3200i mdss (企业管理) 安装的那点事儿
    From 202.97.60.193 icmp_seq=48 Time to live exceeded
    关于清除arp 缓存的那点事儿
    ping 或者ssh 发生connect: No buffer space available 错误
    考研打卡_Day047
    考研打卡_Day046
    考研打卡_Day045
  • 原文地址:https://www.cnblogs.com/cansun/p/8401419.html
Copyright © 2011-2022 走看看