Python实习总结
本文将介绍在Python实习中所了解到的yield、async、await和协程的知识点以及如何使用它们。
yield和生成器
yield是一种特殊的关键字,它可以让函数暂停执行,并将函数的当前状态保持下来。yield常用于生成器中,生成器可以用来迭代一组数据,而不用事先生成整组数据,这样可以节省内存空间。以下是yield的示例代码:
def generator():
for i in range(5):
yield i
g = generator()
for i in g:
print(i)
上述代码先定义了一个生成器函数generator(),在其中使用yield语句,然后定义一个生成器对象g,并用for循环来遍历这个生成器对象。最终输出的结果是0、1、2、3、4。
async和await
async和await是Python3.5版本之后添加的关键字,用于异步编程。async用于定义异步函数,而await则是等待异步函数执行完成。下面是使用async和await的示例代码:
import asyncio
async def coroutine():
print('Hello')
await asyncio.sleep(1)
print('World')
loop = asyncio.get_event_loop()
loop.run_until_complete(coroutine())
上述代码定义了一个异步函数coroutine(),这个函数的执行过程被打断了,等待1秒钟后,再继续执行。在main函数中,首先获取了一个事件循环对象loop,然后使用loop.run_until_complete()方法来运行coroutine()函数。
asyncio和协程
asyncio是Python3.4版本之后添加的库,用于实现异步IO编程。在Python中,协程是一种轻量级的线程,可以实现在同一线程中并发执行多个任务,从而提高程序的效率。以下是使用asyncio和协程的示例代码:
import asyncio
async def factorize(number):
for i in range(1, number+1):
if number%i == 0:
await asyncio.sleep(1)
print('{} * {}'.format(i, number//i))
await asyncio.sleep(1)
async def main():
await asyncio.gather(factorize(100), factorize(200), factorize(300))
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
上述代码定义了一个协程函数factorize(),这个函数模拟对数字进行质因数分解的过程。在主函数main()中,使用asyncio.gather()方法来同时运行三个factorize()函数。最终的输出结果为:1 * 100、2 * 50、4 * 25、5 * 20、10 * 10、1 * 200、2 * 100、4 * 50、5 * 40、8 * 25、10 * 20、20 * 10、1 * 300、2 * 150、3 * 100、4 * 75、5 * 60、6 * 50、10 * 30、12 * 25、15 * 20、30 * 10。
以上就是对Python实习中所了解到的yield、async、await和协程的介绍和示例说明。希望对大家学习Python异步编程有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实习总结(yeild,async,azwait和协程) - Python技术站