如何在线程安全的情况下在Python中使用全局变量

10 投票
4 回答
17501 浏览
提问于 2025-04-17 16:29

我想使用一个全局变量,

只初始化一次。

并且要确保线程安全的访问。

有人能分享一个例子吗?

4 个回答

1

你需要用到的是 threading 这个库:

import threading
mydata = threading.local()
mydata.x = 1
1

如果你在使用 multiprocessing.Processes,那你确实遇到了一些问题。在这种情况下,你应该看看 multiprocessing 模块中的 Managers 和 Queues。

7

如果你只需要读取数据,而且这些数据在启动线程之前就已经初始化好了,那么你就不需要担心线程安全的问题。

如果情况不是这样,Python 的 threading 库可能就是你需要的,特别是里面的锁(locks)。关于这个主题有一篇很不错的文章 - http://effbot.org/zone/thread-synchronization.htm,里面有很多例子。

撰写回答