Python的asyncio 多线程

  --  多线程、进程、协程是什么就不讲了,(就是你理解的一边呼吸,一边看文章)

仅解决问题的话,下边两篇不用看,

Python 中的 async await 概念-CSDN博客

再深一点的看这个

Python中的多线程、进程、协程、threading、asyncio-CSDN博客



我们这里需求很简单,就是让2个方法都运行!!



这里要用的就是asyncio 库

我们这里要让 loop_func 和 my_func 同时执行,需要3步:

 

第一步,把2个方法前边都加上 async  声明为特殊的func(咱也不道能不能叫多线程方法,问就是特殊不一样)。

第二步,在2个func中各自加 一个锚点 await , 这个就是标志运行到这里就可以执行其他应用了。(这个就很重要)

第三步,创建任务,用loop 执行起来。


   ---------------------------


那么就这么写:

完整代码如下:


import time
import asyncio

if __name__ == '__main__':

# 定义func 1
    async def loop_func():
        while True:
            for i in range(0,100):
                print("this is loop func runing----",i)

                # 整个锚点
                await asyncio.sleep(3)

# 定义另一个func

    async def my_func():
        print("this is my_func running...")
        while True:
            for i in range(0,100):
                print("this is my_func runing----",i)

                # 再整个锚点
                await asyncio.sleep(3)

# 搞个task 任务, run起来

    loop = asyncio.get_event_loop()
    tasks = [
        my_func(),
        loop_func(),
    ]
    loop.run_until_complete((asyncio.gather(*tasks)))

其中绿色的是关键句子。

就这么简单,之前因为循环体没加锚点,就高低没有并行起来, 浏览器都查冒烟了没找到问题,最后还得是神奇海螺啊! 艹

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值