在 Python 中,获取子线程的变量值可以通过共享变量或者队列的方式实现。

  1. 共享变量

使用共享变量可以让主线程和子线程之间共享变量值。Python 中可以使用 threading 模块的 Lock 类来控制对共享变量的访问,避免多个线程同时修改变量值导致的竞争条件。

示例代码:

import threading

def worker(shared_var, lock):
    # 获取锁
    lock.acquire()
    # 修改共享变量
    shared_var += 1
    # 释放锁
    lock.release()

if __name__ == '__main__':
    # 定义共享变量和锁
    shared_var = 0
    lock = threading.Lock()
    # 创建子线程并启动
    t = threading.Thread(target=worker, args=(shared_var, lock))
    t.start()
    # 等待子线程结束
    t.join()
    # 输出共享变量的值
    print(shared_var)
  1. 队列

使用队列可以让子线程将运算结果放到队列中,主线程从队列中获取结果。Python 中可以使用 queue 模块的 Queue 类来实现。

示例代码:

import queue
import threading

def worker(q):
    # 进行计算
    result = 1 + 2
    # 将结果放入队列
    q.put(result)

if __name__ == '__main__':
    # 创建队列
    q = queue.Queue()
    # 创建子线程并启动
    t = threading.Thread(target=worker, args=(q,))
    t.start()
    # 等待子线程结束
    t.join()
    # 从队列中获取结果
    result = q.get()
    # 输出结果
    print(result)

需要注意的是,队列中的数据类型必须是可以序列化的,以便在主线程和子线程之间传递。如果需要传递复杂的数据类型,可以使用 pickle 模块将其序列化为字符串或字节流

python 获取子线程的变量值

原文地址: https://www.cveoy.top/t/topic/cvD4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录