Python解包线程安全吗?

2024-09-30 04:41:09 发布

您现在位置:Python中文网/ 问答频道 /正文

Python中的操作是x,y = self.mytupleatomic吗?在

或者self.mytuple在赋值过程中被另一个线程修改,导致x引用的是self.mytuple,和y到第二个版本?在

我用的是python3。在


Tags: self版本过程线程python3赋值mytuplemytupleatomic
1条回答
网友
1楼 · 发布于 2024-09-30 04:41:09

只有当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,这是线程安全的。在

一旦从mytuple访问项目触发自定义__getitem__,所有赌注都将取消。在

相关问题 更多 >

    热门问题