Python GIL、多线程和原子性

问题描述 投票:0回答:1

我读到Python中的列表提供了原子操作。我有 2 个使用列表的线程:一个线程遍历列表以检索正则表达式字符串以应用于某些对象,另一个线程通过添加和删除其中的元素来定期更新列表。如果我希望第一个线程的列表更新是原子的,我应该在两个线程中使用

threading.Lock
吗?

python multithreading
1个回答
0
投票

“通过添加和删除元素” - 如果您的意思是它正在执行

.append()
.remove()
或诸如此类的操作,那么绝对有可能另一个线程可以在这些调用之间运行,并且您会看到半更新的内容。

但是,据我所知,

target_list[:] = new_contents
(即用另一个切片替换列表的整个切片)是原子的,并且您不需要为锁烦恼。

© www.soinside.com 2019 - 2024. All rights reserved.