python基础--生成器(续),内置高阶函数

本文探讨了Python中的生成器,包括如何通过yield实现单线程并发,使用gevent模块处理多任务,以及生成器在实现并发任务中的应用。此外,还介绍了reduce、filter、sort和sorted等内置高阶函数的用法,并提供了相关练习示例。
摘要由CSDN通过智能技术生成

生成器示例

 def create_num(all_num):
        print('-----1-------')
        a, b = 0, 1
        current_num = 0
        while current_num < all_num:
            print('-----2-----')
            ret = yield a
            print('>>>>ret>>>>',ret)
            print('-----3------')
            a, b = b, a + b
            current_num += 1
            print('-----4------')
    
        return 'ok'


obj1 = create_num(100)
print('obj1:',obj1)
red = next(obj1)
print(red)
red1 = obj1.send('python')
print(red1)

在这里插入图片描述

生成器实现多任务

import time

def task_1():
    while True:
        print('-----1-------')
        time.sleep(0.1)
        yield


def task_2():
    while True:
        print('-------2---------')
        time.sleep(0.1)
        yield

#task_1()
#task_2()

def main():
    t1 = task_1()
    t2 = task_2()
    """
    类似于两个while True一起执行
    先让t1运行一会,当t1遇到yield的时候,再返回到18行
    然后执行t2,当它遇到yield的时候,再次切换到t1中
    这样t1/t2/t1/t2的交替运行,最终实现了多任务---->协程
    """
    while True:
        next(t1)
        next(t2)

main()

"""
并行(真的):有两个任务,两个cpu,一个任务占一个cpu
并发(假的):有四个任务,两个cpu,四个任务交替占有cpu执行
"""

在这里插入图片描述

yield实现单线程并发

import time

def consumer(name):
    print('%s 准备学习了~' %(name))
    while True:
        lesson = yield
        print('开始[%s]了,[%s]老师来讲课了~' %(lesson,name))

def producer(name):
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值