首页/文章/ 详情

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

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


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


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


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


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


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

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


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


接下来简单来做个测试:

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






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


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


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

















import timeimport threading

def 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粉丝 70文章 122课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈