当前位置: 首页 > news >正文

宁波企业品牌网站建设无锡网站建设哪家公司好

宁波企业品牌网站建设,无锡网站建设哪家公司好,单位的网站建设费会计处理,如何做医美机构网站观察分析一. 前言 协程#xff08;Coroutine#xff09;是一种轻量级的线程#xff0c;也被称为用户级线程或绿色线程。它是一种用户态的上下文切换方式#xff0c;比内核态的线程切换更为轻量级#xff0c;能够高效的支持大量并发操作。 2. 使用协程的好处 Python 中的协程是通…一. 前言 协程Coroutine是一种轻量级的线程也被称为用户级线程或绿色线程。它是一种用户态的上下文切换方式比内核态的线程切换更为轻量级能够高效的支持大量并发操作。 2. 使用协程的好处 Python 中的协程是通过 asyncio 模块实现的使用协程可以带来以下好处 轻量级并发操作协程的运行过程中不需要进行线程切换和上下文切换避免了这些操作的开销因此比传统的线程更加轻量级可以支持更多并发操作。提高程序性能协程避免了线程上下文切换的开销可以大大提高程序的执行效率。并且在 Python 中协程的调度是由事件循环Event Loop来完成的事件循环采用的是单线程方式能够充分利用 CPU 资源进一步提高了程序的性能。简化异步编程协程使得异步编程更加简单在编写异步程序时可以避免回调地狱Callback Hell的问题提高程序的可读性和可维护性。而且通过 Python 的 async/await 语法可以使用同步的方式编写异步代码使得代码更加易于理解和调试。更加灵活的控制流程协程可以方便地进行挂起和恢复操作因此可以很灵活地控制流程。例如可以在协程中使用条件判断、循环等语句进行更加复杂的流程控制操作。 总之协程是一种高效、轻量级的并发编程方式能够提高程序的性能简化异步编程使得控制流程更加灵活是 Python 中重要的并发编程工具之一。 三. 代码示例 1. 基本使用 import asyncioasync def task1():await asyncio.sleep(1)print(Task 1 done)async def task2():await asyncio.sleep(2)print(Task 2 done)async def main():print(Starting tasks)# 并发执行 task1 和 task2 任务await asyncio.gather(task1(), task2())print(All tasks done)asyncio.run(main())运行结果 2. 进阶使用异步任务循环任务 方法一 import asyncio import randomasync def producer(queue):while True:value random.randint(0, 10)print(fProduced: {value})await queue.put(value)await asyncio.sleep(random.random())async def consumer(queue):while True:value await queue.get()print(fConsumed: {value})await asyncio.sleep(random.random())async def main():queue asyncio.Queue()task_producer asyncio.create_task(producer(queue))task_consumer asyncio.create_task(consumer(queue))await asyncio.gather(task_producer, task_consumer)asyncio.run(main())在上面的代码中我们定义了一个 producer 函数和一个 consumer 函数它们都接受一个 asyncio.Queue 对象作为输入并在其中实现协程的逻辑。其中 producer 函数会在队列中不断生成随机数并将其放入队列中consumer 函数则会不断从队列中取出随机数并进行消费。 在 main 函数中我们首先创建了一个 asyncio.Queue 对象用于协程之间的通信然后使用 asyncio.create_task 函数创建了两个任务分别是生产者任务和消费者任务。最后我们使用 asyncio.gather 函数来运行这两个任务当其中任何一个任务完成时main 函数也会结束。 需要注意的是当我们使用协程时需要使用 await 关键字来挂起协程的执行等待其他协程的执行或者等待 I/O 操作完成。同时在协程中不应该使用阻塞式的操作比如 time.sleep()而应该使用异步 I/O 操作比如 asyncio.sleep()。 方法二 import asyncio import randomasync def producer(queue):while True:value random.randint(0, 10)print(fProduced: {value})await queue.put(value)await asyncio.sleep(random.random())async def consumer(queue):while True:value await queue.get()print(fConsumed: {value})await asyncio.sleep(random.random())async def main():queue asyncio.Queue()方法一# task_producer asyncio.create_task(producer(queue))# task_consumer asyncio.create_task(consumer(queue))# await asyncio.gather(task_producer, task_consumer)方法二await asyncio.wait([producer(queue), consumer(queue)])asyncio.run(main())以上协程的两种启动方式的的区别在于它们等待任务完成的方式不同。 await asyncio.gather(task_producer, task_consumer) 会并发地运行多个任务并等待它们全部完成后才会返回结果。也就是说这种方式只有在所有任务都执行完成后才会进入下一步。 await asyncio.wait([producer(queue), consumer(queue)]) 则是将多个协程对象通过列表进行传递传递给 asyncio.wait() 函数这个函数也会等待多个协程同时完成。不同的是asyncio.wait() 函数会返回两个集合即 done 和 pending)done 集合包含已经完成的任务pending 集合包含还未完成的任务。因此可以通过遍历 done 集合取得协程的结果。 总的来说asyncio.gather() 更加简单易用适合并发执行多个任务并等待它们全部完成的情况。而 asyncio.wait() 则更加灵活并且可以实时获取任务的执行结果。 3. 启动方式差异 注意在 Python 3.7 以前我们需要使用 asyncio.get_event_loop().run_until_complete() 函数来运行协程任务。但在 Python 3.7 及以后的版本中我们可以使用更为简洁的 asyncio.run() 函数来运行协程任务。 示例代码如下 import asyncio import randomasync def producer(queue):while True:value random.randint(0, 10)print(fProduced: {value})await queue.put(value)await asyncio.sleep(random.random())async def consumer(queue):while True:value await queue.get()print(fConsumed: {value})await asyncio.sleep(random.random())async def main():queue asyncio.Queue()方法一# task_producer asyncio.create_task(producer(queue))# task_consumer asyncio.create_task(consumer(queue))# await asyncio.gather(task_producer, task_consumer)方法二await asyncio.wait([producer(queue), consumer(queue)])协程启动的方式一 # asyncio.run(main())协程启动的方式二 new_loop asyncio.new_event_loop() asyncio.set_event_loop(new_loop) new_loop.run_until_complete(main())总之协程是一种高效、轻量级的并发编程方式能够提高程序的性能简化异步编程使得控制流程更加灵活是 Python 中重要的并发编程工具之一。 以上就是关于Python - 协程基本使用的介绍希望对你有所帮助谢谢
http://www.w-s-a.com/news/604436/

相关文章:

  • 徐州人才网官方网站邯郸seo优化公司
  • 海南响应式网站建设哪里好瑞安电影城网站建设
  • wordpress widgetkit济南优化网站厂家
  • 麦片网站建设佛山短视频推广渠道
  • 免费自助建网站销售的网络建设
  • 传媒大气的网站网站怎么做分类聚合
  • 网站可以自己备案吗crm系统架构图
  • 罗湖网站建设58做网站的公司盐城
  • 网站开发答辩想要去网站做友情链接怎么发邮件
  • 网站名称填写什么广告网络推广怎么做
  • 做网站架构需要注意什么百度竞价排名推广
  • 网站接口设置地税局内网网站建设
  • 谷歌提交网站入口wordpress前台自动登录
  • 规模以上工业企业的标准是什么洛阳霞光seo网络公司
  • 怎样用文本建一个网站做美容美发学校网站公司
  • 南宁企业网站建设制作芜湖网站建设推广
  • 泉州市建设局网站公示深圳建站公司好坏
  • 如何搭建网站教程一个人制作网站
  • 网站开发专业都有哪些课程广州安全教育平台账号找回
  • 网站调整方案适合平面设计师的网站
  • 免费服务器建立网站用html5做的旅游网站代码
  • 学校英语网站栏目名称WordPress禁用邮件注册
  • 手机qq网页版网站沧州手机网站开发
  • 深圳罗湖网站设计公司建设的网站属于无形资产吗
  • 网站开发python西安网站建站品牌
  • 网站开发商标属于哪一类做网站还有钱赚吗
  • 做设计的搜素材上什么网站好设计公司画册设计哪家好
  • 视频网站开发需要什么语言做ui设计一年后年薪多少
  • 网站服务器维护费用统一企业官方网站
  • 网站如何调用手机淘宝做淘宝客呼和浩特网站运营公司