Python全局线程.condition()并在多个模块中使用
编辑:我遇到的问题与我的程序结构无关。FAPWS3的路由选择了一个类似的、命名相近的函数。 我有一个跨越多个文件的大型程序。我需要在这些文件中使用threading.condition()锁定功能。这是一个我正在尝试做的例子。在生产环境中,我没有得到任何错误,但是锁的状态似乎没有被共享(我可以在一个线程中获取,在另一个线程中获取,而不释放前一个线程) main.pyPython全局线程.condition()并在多个模块中使用,python,multithreading,module,Python,Multithreading,Module,编辑:我遇到的问题与我的程序结构无关。FAPWS3的路由选择了一个类似的、命名相近的函数。 我有一个跨越多个文件的大型程序。我需要在这些文件中使用threading.condition()锁定功能。这是一个我正在尝试做的例子。在生产环境中,我没有得到任何错误,但是锁的状态似乎没有被共享(我可以在一个线程中获取,在另一个线程中获取,而不释放前一个线程) main.py import servera, serverb # some code that deploys server-a and se
import servera, serverb
# some code that deploys server-a and server-b as threads
常数.py
import threading
mylock = threading.Condition()
服务器A.py
from constants import mylock
Class ServerA():
def doSomething():
mylock.acquire()
# do something
mylock.release()
服务器b.py
from constants import mylock
Class ServerB():
def doSomethingElse():
mylock.acquire()
# do something else
mylock.release()
如果我没记错的话,在导入模块时Python会运行它。所以我认为每个文件中都有不同的mylock。 你可以试着打印它并查看ID 下面发布的Jeffs链接表明: 因为每个模块只有一个实例,所以对模块对象所做的任何更改都会反映到所有地方
所以这不是问题。我就是这么想的,那么我该如何引用全局mylock?事实上,根据我的说法,我认为我正确地共享了变量。你的评论并不能真正解释你为什么会有问题;请发布一个实际演示问题的工作代码的最小示例。