python3--生成器并行运算

# Auther: Aaron Fan

"""def consumer(name):    print("%s 准备吃包子啦!" % name)    while True:        baozi = yield        print("包子[%s]来了,被[%s]吃了!" % (baozi, name))

people = consumer("FanHeng")people.__next__()

stuffing = "胡萝卜陷"people.send(stuffing)   #把stuffing的值传给生成器consumer中的yield,并调用yield

people.__next__()   # 单纯的调用next不会给yield传值,仅仅是调用yield。所以程序显示的是:                    # 包子[None]来了,被[FanHeng]吃了!

stuffing = ["韭菜馅", "牛肉馅", "黄金菜团"]for i in stuffing:    people.send(i)"""

# 完整的演示一个协程:# 原理和上面的示例是一样的,都是用的yield和send来实现,只是这个示例使用了两个函数互相协作去完成了一个生产包子和吃包子的功能import timedef consumer(name):    print("%s 准备吃包子啦!" % name)    while True:        baozi = yield        print("包子[%s]来了,被[%s]吃了!" % (baozi, name))

def producer(name):    people1 = consumer(‘Aaron‘)    people2 = consumer(‘James‘)    people1.__next__()    people2.__next__()    for i in range(6):        time.sleep(1)        print("\n做了1个包子,分成了两半")        people1.send(i)        people2.send(i)

producer("FanHeng")
时间: 2024-12-26 19:22:36

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

python3 生成器表达式

生成器表达式 [i for i in range(100)] #列表解析 与列表解析的不同是,列表解析用中括号,生成器表达式用小括号 g = (i for i in range(1000)) #生成器表达式 #不用yield的表达形式 print(g) #这是一个迭代对象 print(next(g)) #next(g) == g.__next__() #next(g)相当于g.__next__() print(next(g)) #next(g) == g.__next__() print(nex

python3 - 生成器genarator

在Python中,这种一边循环一边计算的机制,称为生成器:generator. 生成器保存的是算法,每次调用 next() ,就计算出 下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出 StopIteration 的异常当然,这种不断调用 next() 实在是太变态了,正确的方法是使用 for 循环,因为生成器也是可迭代对象.所以,我们创建了一个生成器后,基本上永远不会调用 next() ,而是通过 for 循环来迭代它,并且不需要关心 StopIteration 异常. 创建生成

python3 生成器&迭代器

#Author by Andy#_*_ coding:utf-8 _*_import timefrom collections import Iterable#列表生成式 def func(): list=[] for i in range(10000000): list.append(i) print(list)#print(list)#[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]generator=(i for i in range(10)) #print(type

python3 生成器初识 NLP第五条

话不多说,先把第五条抄一遍: 五,沟通的意义在于对方的回应 沟通没有对与错,只有“有效果”或者“没有效果”之分. 自己说得多“对”没有意义,对方收到你想表达的讯息才是沟通的意义. 因此自己说什么不重要,对方听到什么才是重要. 话有很多种方法说出来,使听着完全收到讲者意图传达的讯息,便是正确的方法. 沟通的效果,来自声调和身体语言的文字更大. 沟通讯息的送出与接受在潜意识层面的比意识层面的大得多. 没有两个人对同样的讯息有完全相同的反应. 说话的效果由讲者控制,但由听着决定. 改变说的方法,才有机

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('

生成器并行运算

还可通过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 = consum

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(*