Python多线程基础:概念解析与代码实现
本文深入解析Python多线程概念,通过读者阅读文章的比喻阐明并发与并行的区别。详细演示如何使用threading模块创建线程、指定线程名称,并展示多线程执行时的输出乱序现象。同时介绍获取活跃线程数和当前线程对象的方法,帮助开发者理解多线程基础实现与状态监控。
什么是多线程?
多线程指的是多个独立的运行单元,它们同时执行相同的任务。
想象一下,文章发布后同时被许多读者阅读,这些读者的“阅读”行为可以看作是一个个线程。多线程即表现为多个读者同时阅读同一篇文章,其核心在于“同时”有多个读者在进行阅读操作。
如果多个读者分时间段依次阅读,任意时刻只有一个人在读,即便涉及多人,这依然属于单线程模式。
接着我们回顾之前分享的关于关注和点赞的代码逻辑。
def dianzan_guanzhu():
now = datetime.datetime.now()
name = "python萌新"
print("%s name:%s" % (now, name))
time.sleep(1)
result = "好棒!" + name + " 关注雷学委,学会了开发知识!"
print("%s result:%s" % (now, result))
return result
接下来查看具体的代码示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/21 12:02 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello
import threading
import datetime
import time
def dianzan_guanzhu():
now = datetime.datetime.now()
name = "python萌新"
print("%s name:%s" % (now, name))
time.sleep(1)
result = "好棒!" + name + " 关注雷学委,学会了开发知识!"
print("%s result:%s" % (now, result))
return result
for i in range(3):
mythread = threading.Thread(name="t-" + str(i), target=dianzan_guanzhu)
print("mythread:", mythread)
print("is_alive:", mythread.is_alive())
mythread.start()
print("is_alive:", mythread.is_alive())
Thread类允许通过name参数指定线程的名称。
直接复制并运行上述代码,这里我们创建了3个线程。
这3个线程依次调用了dianzan_guanzhu函数。
以下是运行结果:

这3个线程在不同时间打印完成,但内容输出是乱序的,甚至出现了串行执行的情况。
读者可以多次运行代码以观察不同结果。
获取活跃线程相关数据
threading.active_count函数:用于获取当前活跃的线程数量。threading.current_thread函数:用于获取当前活跃的线程对象,借此我们可以获取线程名称,例如通过threading.current_thread().getName()。。
前文提到过,加上主线程,总共有4个线程。
运行以下代码进行验证:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/21 12:02 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello
import random
import threading
import datetime
import time
def dianzan_guanzhu():
thread_name = threading.current_thread().getName()
now = datetime.datetime.now()
print("线程启动了:", thread_name)
name = "python萌新"+thread_name
print("%s - %s name:%s" % (thread_name, now, name))
time.sleep(1)
result = "好棒!" + name + " 关注雷学委,学会了开发知识!"
print("%s - %s result:%s" % (thread_name, now, result))
return result
for i in range(3):
mythread = threading.Thread(name="t-" + str(i), target=dianzan_guanzhu)
print("mythread:", mythread)
print("is_alive:", mythread.is_alive())
mythread.start()
ac = threading.active_count()
print("active_count:", ac)
如果我们打印活跃线程数,那么等到3个线程都执行了start调用后。
加上主线程,最多会有4个活跃线程。

今天先展示多个线程执行同一任务的代码实现。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注本站的更多内容!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













