我是Python多线程编码的新手。我查阅Lock Object使用手册,找到正常情况
g_mutex = Lock()
g_mutex.acquire()
#some code
g_mutex.release()
但锁没有指定它要锁定的变量或函数?那么python会自动找到要锁定的所有关键变量吗?如果我调用某个函数来修改某些变量怎么办?
答案 0 :(得分:6)
Lock
的目的是在任何给定时间最多只有一个线程可以保存它。如果你获得了锁,你可以确定没有其他进程拥有它。由你来定义锁的语义 - 如果你想用它来保护对某个变量的访问,就这样做:在搞乱那个变量之前获取锁,在你完成时释放它。锁对象与它保护的变量之间不需要明确的关系 - 这是由您使用它的方式定义的。 (另请注意,此概念没有特定于Python的内容。)
答案 1 :(得分:0)
Lock不会找到要锁定的变量或函数。锁是一种可以用来做的机制。例如,如果要保护变量foo
的变量,则必须: