协程

协程又称为线程,

线程是一个python个中另外一中实现多任务返方式,在一个线程中的某个函数可以理解任何地方保存当前函数中的临时变量的信息,然后再到另一个函数中执行协程和线程差异在多个处理器的情况下,从概念上多线程同时运行多个线程:而协同程序是同过协作来完成的在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只在必要时才会被挂起

简单实现协程from gevent import monkey#导入补丁模块

monkey.patch_all()#创建补丁

import gevent

 import requestfrom queue 

import Queueimport time

#明确url 

base_url='https://hr.tencent.com/position.php?start=%d'#腾讯

def get_page(q):

whilenot q.empty()#判断对象不为空时

    url = q.get#获取队列中的一个

    response=requests.get(url,headers={'User-Agent':'lalala'})#发送请求        

        print(reponse.url)print(time.ctime())#当前时间

        g_list=[]#列表q= Queue()#队列创建

创建任务

foriinrange(0,3800+1,10):

fullurl = base_url/%#将内容插入链家

q.put(fullurl)

#多少个基层

for iinrange(100); 

 g = genent.spawn(get_page,q)#创建协程

g_list.append(g)#将协程对象添加到列表中

# for i in g_list:#遍历状态

# i.join()#等待当前协程执行完毕,在继续执行

gevent.joinall(g_list)#等待所有协程执行完毕

print(time.ctime())#结束时间

greenlet

为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变的更加简单

greenlet是一个python的协程管理、切换模块。通过greenlet,你可以显式地在不同的任务之间切换。

gevent.spawn启动的所有协程,都是运行在同一个线程之中,所以协程不能跨线程同步数据。

gevent.queue.Queue 是协程安全的。

python程序实现的一种单线程下的多任务执行调度器,简单来说在一个线程里,先后执行AB两个任务,但是当A遇到耗时操作(网络等待、文件读写等),这个时候gevent会让A继续执行,但是同时也会开始执行B任务,如果B在遇到耗时操作同时A又执行完了耗时操作,gevent又继续执行A。

imort   gevent  

def   test(time)

print(1)

gevent.sleep(time)

print(2)

def  test(time):

print( )

gevent.sleep(time)

print(4)

if__name =='main'

gevent.joinall9[ 

             gevent.spawn(test,2), 

             gevent.spawn(test,3)

])

其中gevent.sleep()是gevent自带的延时,当gevent遇到这个延时时会自动切换,这里用gevent.sleep()代替一些耗时操作

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • 协程 阅读目录 一 引子 二 协程介绍 三 Greenlet模块 四 Gevent模块 引子 之前我们学习了线程、...
    go以恒阅读 708评论 0 1
  • 一、总体内容 1.1、协程的介绍 1.2、迭代器以及迭代器的应用 1.3、生成器(生成器与迭代器保存的都是生成数据...
    IIronMan阅读 861评论 0 1
  • 协程,又称微线程,纤程,协程是一种用户态的轻量级线程 协程是单线程 协程的好处: 1 没有上下文切换 ...
    钱塘阅读 248评论 0 2
  • 实体商城倒下来,一个个圈钱的在线商城起来了,换汤不换药,普通的消费者还是在商家的坑里。网易严选的粉丝们,这个价格差...
    樊派宝希阅读 245评论 0 0
  • 一,将赚钱目标转移到专注上来。二,将时间聚焦到创业上来。带学生比赛也要开始有转移。否则,创业永远上不了路。 下半年...
    大书没长大阅读 162评论 0 0