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)