2024-09-30 04:41:09 发布
网友
Python中的操作是x,y = self.mytupleatomic吗?在
x,y = self.mytuple
或者self.mytuple在赋值过程中被另一个线程修改,导致x引用的是self.mytuple,和y到第二个版本?在
self.mytuple
我用的是python3。在
只有当Python代码不处理项目访问时,它才是线程安全的。在
解包由一个字节码处理:
>>> def f(): ... a, b = self.mytuple ... >>> import dis >>> dis.dis(f) 2 0 LOAD_GLOBAL 0 (self) 3 LOAD_ATTR 1 (mytuple) 6 UNPACK_SEQUENCE 2 9 STORE_FAST 0 (a) 12 STORE_FAST 1 (b) 15 LOAD_CONST 0 (None) 18 RETURN_VALUE
假设self.mytuple实际上是一个标准的Python tuple,这是线程安全的。在
tuple
一旦从mytuple访问项目触发自定义__getitem__,所有赌注都将取消。在
mytuple
__getitem__
只有当Python代码不处理项目访问时,它才是线程安全的。在
解包由一个字节码处理:
假设
self.mytuple
实际上是一个标准的Pythontuple
,这是线程安全的。在一旦从
mytuple
访问项目触发自定义__getitem__
,所有赌注都将取消。在相关问题 更多 >
编程相关推荐