python是否自动识别关键部分?

时间:2011-12-13 13:52:46

标签: python multithreading

我是Python多线程编码的新手。我查阅Lock Object使用手册,找到正常情况

g_mutex = Lock()
g_mutex.acquire()
#some code
g_mutex.release()

但锁没有指定它要锁定的变量或函数?那么python会自动找到要锁定的所有关键变量吗?如果我调用某个函数来修改某些变量怎么办?

2 个答案:

答案 0 :(得分:6)

Lock的目的是在任何给定时间最多只有一个线程可以保存它。如果你获得了锁,你可以确定没有其他进程拥有它。由你来定义锁的语义 - 如果你想用它来保护对某个变量的访问,就这样做:在搞乱那个变量之前获取锁,在你完成时释放它。锁对象与它保护的变量之间不需要明确的关系 - 这是由您使用它的方式定义的。 (另请注意,此概念没有特定于Python的内容。)

答案 1 :(得分:0)

Lock不会找到要锁定的变量或函数。锁是一种可以用来做的机制。例如,如果要保护变量foo的变量,则必须:

  • 为该变量创建一个锁
  • 在您的整个代码中进行任何修改或使用之前获取
  • 之后发布