是否需要在方法中将全局线程锁声明为全局锁才能获取它?
Does a global threading Lock need to be declared as global within a method in order to aquire it?
在方法内部获取全局实例化锁时,是否需要使用global
关键字声明全局锁?
如果不是,为什么不呢?我们不是通过获取锁来修改吗?
我正在按照以下方式对案例进行成像:
import threading
name_lock = threading.Lock()
name: str = ""
...
def modify_name(new_name: str):
global name
with name_lock:
name = new_name
...
在 functions/classes 之外创建的所有变量自动成为全局变量。
我们仅在函数内部使用 global
来通知函数它必须使用 external/global 变量,当您尝试使用 =
分配新值时 - 如 name = new_name
- 如果你不使用 global
那么它会创建局部变量 name
。但是当你想改变对象内部的一些 value/variable 时它不需要这个 - 即。 my_list.append(value)
。并且 with name_lock
不会为变量 name_lock
分配新值,但它只会在对象 name_lock
内部执行一些方法,这些方法会更改内部值。
在方法内部获取全局实例化锁时,是否需要使用global
关键字声明全局锁?
如果不是,为什么不呢?我们不是通过获取锁来修改吗?
我正在按照以下方式对案例进行成像:
import threading
name_lock = threading.Lock()
name: str = ""
...
def modify_name(new_name: str):
global name
with name_lock:
name = new_name
...
在 functions/classes 之外创建的所有变量自动成为全局变量。
我们仅在函数内部使用 global
来通知函数它必须使用 external/global 变量,当您尝试使用 =
分配新值时 - 如 name = new_name
- 如果你不使用 global
那么它会创建局部变量 name
。但是当你想改变对象内部的一些 value/variable 时它不需要这个 - 即。 my_list.append(value)
。并且 with name_lock
不会为变量 name_lock
分配新值,但它只会在对象 name_lock
内部执行一些方法,这些方法会更改内部值。