• python yield


    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__()方法.



  • 相关阅读:
    裴蜀定理
    上下界网络流
    寻找符合子序列要求的区间个数
    小猪分配 , 最大流
    floyd + 最大流 (奶牛分配问题)
    抛硬币问题
    消消乐
    Entity Framework(1)
    冒泡排序
    二分法查找数据
  • 原文地址:https://www.cnblogs.com/dufeixiang/p/10169309.html
Copyright © 2020-2023  润新知