编辑:我遇到的问题与我的程序结构无关。 FAPWS3的路由选择了一个类似的,具有密切命名的功能。
我有一个跨多个文件的大型程序。我需要在这些文件中使用threading.condition()锁定功能。这是我正在尝试做的一个例子。在生产中我没有得到任何错误,但是锁的状态似乎没有被共享(我可以在一个线程中获取,并且在没有先前被释放的情况下在另一个线程中获取)。
main.py
import servera, serverb
# some code that deploys server-a and server-b as threads
constants.py
import threading
mylock = threading.Condition()
servera.py
from constants import mylock
Class ServerA():
def doSomething():
mylock.acquire()
# do something
mylock.release()
serverb.py
from constants import mylock
Class ServerB():
def doSomethingElse():
mylock.acquire()
# do something else
mylock.release()
答案 0 :(得分:0)
如果我没记错的话,当你导入一个模块时,Python会运行它。所以我认为你在每个文件中都有一个不同的mylock。 您可以尝试打印它并查看ID。
下面发布的杰夫斯链接清除了:
因为每个模块只有一个实例,所以对模块对象所做的任何更改都会反映在任何地方。
所以这不是问题。