生成器并行运算

还可通过yield实现在单线程的情况下实现并发运算的效果

import time
def consumer(name):
    print("%s 准备吃包子啦!" %name)
    while True:
        baozi = yield

        print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
c = consumer("ChenRongHua")
c.__next__()

def producer(name):
    c = consumer(‘A‘)
    c2 = consumer(‘B‘)
    c.__next__()
    c2.__next__()
    print("我开始做包子啦!")
    for i in range(10):
        time.sleep(2)
        print("做了2个包子!")
        c.send(i)
        c2.send(i)

producer("zhuziqin")

  

时间: 2024-10-11 22:13:04

生成器并行运算的相关文章

python 生成器并行运算

def consummer(name): while True: baozi = yield print('包子%s来啦,被%s吃了'%(baozi,name)) return None c = consummer('紫星大人') bz = '韭菜馅' c.send(bz)   #唤醒yield并传值 c.__next__()  #只唤醒不传值 模拟单线程下的并行效果#实际上应该是携程效果,比进程更小的一个单位 import timedef consummer(name):    print('

python学习之路:生成器并行运算

异步IO的雏形: 简单的单线程下的并行效果 import time def consumer(name): print("%s 准备吃包子啦!"%name) while True: baozi = yield print("包子[%s]来了,被[%s]吃了!"%(baozi,name)) c = consumer("ChenRongHua") c.__next__()#调用只唤醒 yield # b1="韭菜馅" # # c.

九 函数

什么是函数? 为什么要用函数? 函数的分类:内置函数与自定义函数 如何自定义函数 语法 定义有参数函数,及有参函数的应用场景 定义无参数函数,及无参函数的应用场景 定义空函数,及空函数的应用场景 调用函数 如何调用函数 函数的返回值 函数参数的应用:形参和实参,位置参数,关键字参数,默认参数,*args,**kwargs 高阶函数(函数对象) 函数嵌套 作用域与名称空间 装饰器 迭代器与生成器及协程函数 三元运算,列表解析.生成器表达式 函数的递归调用 内置函数 面向过程编程与函数式编程 本节课

python之路4:各种器

装饰器 生成器 迭代器 一.装饰器 装饰器是函数,官方叫语法糖,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作. 语法: def wrapper(func): def result(): print('before') func() print('after') return result @wrapper def foo(): print('foo') 实例: #!/usr/bin/env python # -*- coding:utf-

python第二章函数以及常用模块

装饰器: 定义:本质是函数,(装饰其他的函数)就是为其他函数添加附加功能 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 实现装饰器的知识储备 1,函数即"变量" 2,高阶函数 a:把一个函数名当做实参传给另一个函数 b:返回值包含函数名 3,嵌套函数 高阶函数+嵌套函数==装饰器 import time def timemer(func): def wrapper(*args,**kwargs): start_time=time.time() func(*

基础补充练习

基础补充1--collections模块 命名元组另一个用途就是作为字典的替代,因为字典存储需要更多的内存空间.如果你需要构建一个非常大的包含字典的数据结构,那么使用命名元组会更加高效.但 是需要注意的是,不像字典那样,一个命名元组是不可更改的. from collections import namedtuple records=[ ('mac',2,20000), ('lenovo',1,3000), ('apple',0,10), ('tesla',10,10000000) ] cost=

Day4 - 迭代器&生成器、装饰器、Json & pickle 数据序列化、软件目录结构规范

---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 需求:列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求把列表里的每个值加1 1 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 b = [] 3 for i in a: 4 b.append(i+1) 5 a = b 6 print(a) 普通青

生成器 迭代器,装饰器 ,软件开发规范

一.生成器 1.列表生成式 有列表data=[1,2,3,4],要求将列表data里面的数据均加1:  除了循环,可以用列表生成式一行写出替代多行的循环 1 data=[1,2,3,4] 2 data=[i+1 for i in data] 3 print(data) 生成式中也可以写三元运算 #需求:列表中小于3的都*2,大于等于3的+1 data=[i*2 if i<3 else i+1 for i in data] 列表生成式,是python内置的一种直接生成list的表达式,可以直接生成

详解Python中yield生成器的用法

yield是生成的意思,但是在python中则是作为生成器理解,生成器的用处主要可以迭代,这样简化了很多运算模型(还不是很了解是如何简化的). yield是一个表达式,是有返回值的. 当一个函数中含有yield时,它不再是一个普通的函数,而是一个生成器.当该函数被调用时不会自动执行,而是暂停, 参考:http://www.aichengxu.com/view/64610  见第一个例子: 例1: >>> def mygenerator(): ... print 'start...' ..