首页/文章/ 详情

简单案例-Python线程threading模块告诉你什么是“多并发”?

1年前浏览1954
python程序在执行时,一般都是从上到下顺序执行,而且是执行完一行再才能执行下一行的。但有时候,我们希望上一句还没执行完毕,我们就需要继续往下执行下一句了。这是一个最简单的“多并发”。

多线程并发,简称多并发,即多个线程同时执行。一般而言,多线程并发就是把一个任务拆分为多个子任务,然后交由不同线程处理不同子任务,使得这多个子任务同时执行。

赛程(主线程)启动后,每个运动员(都是一个子线程)都开始按照自己的轨迹运行。

python中是可以实现多线程并发的。python编程需要借助于threading模块。threading 模块中最核心的内容是 Thread 这个类。

简单来看下这个类的定义:

    class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)

    在Thread这个类定义的参数中,有一个参数是“target”,即传一个回调函数对象,这就指定了执行这个线程是实际需要调用的另一个程序。

    回到文章开头的问题,程序运行时默认就是在主线程上,接着我们使用Thread这个类再创建一个副线程,在这个副线程上调用另一段的程序,这样就可以实现在主线程运行时,同时再额外运行另一个线程的目的。

    接下来简单来做个测试:

    定义下主线程也即主程序的内容。

      import timefor i in range(5):print("我是主线程,运行进度:{}%".format((i+1)/5*100))    time.sleep(1)

      以下是主线程也即主线程的运行效果。

      然后我们在主程序中插入一个副线程,并定义好线程调用的程序,代码如下。

        import timeimport threadingdef funct_thread():for i in range(5):        print("我是副线程,运行进度:{}%".format((i+1)/5*100))        time.sleep(1)thread = threading.Thread(target=funct_thread)thread.start()for i in range(5):    print("我是主线程,运行进度:{}%".format((i+1)/5*100))    time.sleep(1)

        运行后的效果如下:

        上面测试的效果出来了,也即副线程启动后,并没有影响主线程的运行,双方各自按照自己的节奏在执行自己的业务,直到两个线程都运行完毕。

        本文完

        来源:车路慢慢
        python
        著作权归作者所有,欢迎分享,未经许可,不得转载
        首次发布时间:2023-06-22
        最近编辑:1年前
        李慢慢
        硕士 自动驾驶仿真工程师一枚
        获赞 11粉丝 63文章 122课程 0
        点赞
        收藏
        未登录
        还没有评论
        课程
        培训
        服务
        行家
        VIP会员 学习 福利任务 兑换礼品
        下载APP
        联系我们
        帮助与反馈