如何在Python中以线程安全的方式使用全局变量

9

我想使用全局变量,只需初始化一次,并且能够线程安全访问。

有人可以分享一个例子吗?


1
谷歌搜索了Python变量作用域。第一个链接:http://www.saltycrane.com/blog/2008/01/python-variable-scope-notes/ - Achrome
什么是线程安全?http://blogs.msdn.com/b/ericlippert/archive/2009/10/19/what-is-this-thing-you-call-thread-safe.aspx - David Heffernan
4个回答

6
如果您需要只读访问并且该值在线程生成之前已经初始化,则无需担心线程安全问题。
如果不是这种情况,那么Python的threading库可能是您所需要的,更确切地说就是锁。关于此主题的真正好文章就是http://effbot.org/zone/thread-synchronization.htm,其中有很多例子。

1
如果您正在使用multiprocessing.Processes,那么您可能会遇到问题。在这种情况下,您应该查看multiprocessing模块中的Managers和Queues。

1

你想要的是 线程 库:

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

0
如果你只初始化一次,并且在模块加载时进行初始化(也就是说:在其他线程可以访问之前),那么你将不会遇到任何线程安全问题。不需要同步。
但是,如果你指的是一个更复杂的情况,你需要进一步解释才能得到一个合理的代码示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接