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)

posted @ 2024-03-21 16:15  夜久听山雨  阅读(17)  评论(0编辑  收藏  举报