Python全局线程.condition()并在多个模块中使用

Python全局线程.condition()并在多个模块中使用,python,multithreading,module,Python,Multithreading,Module,编辑:我遇到的问题与我的程序结构无关。FAPWS3的路由选择了一个类似的、命名相近的函数。 我有一个跨越多个文件的大型程序。我需要在这些文件中使用threading.condition()锁定功能。这是一个我正在尝试做的例子。在生产环境中,我没有得到任何错误,但是锁的状态似乎没有被共享(我可以在一个线程中获取,在另一个线程中获取,而不释放前一个线程) main.py import servera, serverb # some code that deploys server-a and se

编辑:我遇到的问题与我的程序结构无关。FAPWS3的路由选择了一个类似的、命名相近的函数。

我有一个跨越多个文件的大型程序。我需要在这些文件中使用threading.condition()锁定功能。这是一个我正在尝试做的例子。在生产环境中,我没有得到任何错误,但是锁的状态似乎没有被共享(我可以在一个线程中获取,在另一个线程中获取,而不释放前一个线程)

main.py

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?事实上,根据我的说法,我认为我正确地共享了变量。你的评论并不能真正解释你为什么会有问题;请发布一个实际演示问题的工作代码的最小示例。