编程语言
首页 > 编程语言> > Python解包线程安全吗?

Python解包线程安全吗?

作者:互联网

Python中是否像x,y = self.mytuple atomic这样的操作?

或者在分配期间可以通过另一个线程修改self.mytuple,导致x引用self.mytuple的第一个版本,y引用第二个版本?

我正在使用Python 3.

解决方法:

只有当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元组,它是线程安全的.

一旦从mytuple访问项目触发自定义__getitem__,所有投注都将关闭.

标签:python,multithreading,atomicity,thread-safety,atomic
来源: https://codeday.me/bug/20190831/1777509.html