博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python yield
阅读量:4476 次
发布时间:2019-06-08

本文共 1280 字,大约阅读时间需要 4 分钟。

def task():     print('start')     yield hello('dufeixiang')  #阻塞当前函数运行而运行另外一个函数,另一个函数中可以再返回当程序最后阻塞的地方继续运行。 def hello(name):     print(name) task()  task().__next__() ------------------------------------------------------------------------------------ 多任务协作:
def done():     print('执行回掉函数') def Request(url,callback):     import requests,time     r1=requests.get(url)     time.sleep(2)     if r1.text:         print('任务执行结束')         callback() def run():     url=['https://www.baidu.com','https://www.baidu.com','https://www.baidu.com','https://www.baidu.com','https://www.baidu.com','https://www.baidu.com']     for index,i in enumerate(url):         print('开始任务第%s个任务'%index)         yield Request('https://www.baidu.com',done)         print('全部放入队列') task=run() while True:     try:         task.__next__()     except Exception:         break
------------------------------------------------------------------------------------- def task1():     while True:         name=yield   #接收来自 send的值         print('name is',name) def task2():     for i in range(2):         a=task1()         a.__next__()  #必须next 方式启动迭代器         a.send(i)     #将值传送到上次yield中断的地方,并从上次中断的地方开始运行 task2() 当以个函数中使用了yield后函数就成了一个迭代器,就具有了__netxt__()方法.

转载于:https://www.cnblogs.com/dufeixiang/p/10169309.html

你可能感兴趣的文章
数据类型的提升(promotion)
查看>>
Thead是不能返回值的,但是作为更高级的Task当然要弥补一下这个功能。
查看>>
Android呼叫转移跳转到拨号盘 “#”号显示不出来
查看>>
Python中的生成器与yield
查看>>
JQuery 的Bind()事件
查看>>
Maven 常用配置
查看>>
Objects源码解析
查看>>
video
查看>>
栈的c语言顺序实现(动态申请空间)
查看>>
【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET
查看>>
获取子iframe框架的元素
查看>>
WordCount bug修复录
查看>>
承载进程 (vshost.exe)
查看>>
[转]WPF MVVM 实战
查看>>
[转载] Python 标准库 urllib2 的使用细节
查看>>
Silverlight使用DataGrid的模板列(DataGridTemplateColumn)实现类似TreeListView控件的效果
查看>>
Java学习——Applet写字符串(调字体)
查看>>
react路由
查看>>
nyoj 220——推桌子——————【贪心】
查看>>
java 静态方法分析
查看>>