8

python的copy模块线程安全吗?

如果没有,我应该如何在 python 中以线程安全的方式复制 \deepcopy 可变对象?

4

1 回答 1

14

Python 的GIL保护字节码,而不是 Python 语句(参见简短详细的解释)。由于copy.copy()copy.deepcopy()都是在 python 中实现的,它们肯定不仅仅是一个字节码,所以不,它们不是线程安全的!

如果您必须使用多个线程,并且在很多情况下您应该使用 IO 专用线程,那么就做必须做的事情 - 使用threading.Lock(). 请注意,您可以将优雅的 with 语句与 lock 对象一起使用

于 2013-06-27T09:04:27.853 回答