threading
threading
是 Python 中用于创建和管理线程的模块。以下是一些基本的用法和示例:
1、创建线程
使用 threading.Thread
类来创建一个新线程。你可以指定线程执行的函数、传递给该函数的参数以及一个可选的线程名。
import threading
def worker():
print("线程正在运行...")
# 创建线程对象
t = threading.Thread(target=worker)
# 启动线程
t.start()
2、获取当前线程
使用 threading.current_thread()
函数来获取当前正在执行的线程对象。
import threading
print(threading.current_thread())
3、获取线程数量
使用 threading.active_count()
函数来获取当前活动的线程数。
import threading
# 创建并启动一些线程...
print("当前活动的线程数:", threading.active_count())
4、线程同步
当多个线程同时访问共享变量时,可能会出现数据不一致的问题。为了确保线程同步,你可以使用锁(例如 threading.Lock
)或其他同步机制。
import threading
lock = threading.Lock()
def worker():
with lock:
# 访问共享变量...
pass
# 创建并启动线程...
5、守护线程
通过设置 daemon
属性为 True
,你可以将线程设置为守护线程。守护线程在主程序退出时会自动结束,而不会等待其他非守护线程完成。
import threading
def daemon_worker():
while True:
print("守护线程正在运行...")
# 创建守护线程
t = threading.Thread(target=daemon_worker)
t.daemon = True
t.start()
# 主程序继续执行...
6、注意事项
- 线程之间的通信:线程之间可以通过共享变量来进行通信,但需要确保线程安全。
- 线程的同步:当多个线程同时访问共享变量时,需要使用锁或其他同步机制来确保数据一致性。
- 避免死锁:在使用锁时,要特别注意避免死锁的情况。
这只是 threading
模块的基本用法。对于更复杂的并发编程任务,你可能还需要了解其他高级特性,如线程池、条件变量、信号量等。同时,也要注意多线程编程中的并发问题,如数据竞争、死锁等。
7、遇到过的问题
def getTesterBarChart(self, request, *args, **kwargs):
# 异步任务
threading.Thread(target=caseService()).start() ##(错误展示 target只接收str类型,不接受带括号的对象类型)
print('成功')
threading.Thread(target=caseService).start() ## 正确展示
# print('成功')
return APIRespones('1000', '用例拉取启动成功,预计10分钟后完成数据入库', True)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)