gpt4 book ai didi

python - 静态方法和线程安全

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:20 25 4
gpt4 key购买 nike

在具有“一切皆对象”思想的 Python 中,线程安全在哪里?

我正在用 wsgi 开发 django 网站。它也可以在 linux 上运行,而且据我所知,它们使用有效的进程管理,所以我们不能过多地考虑线程安全。我不怀疑模块是如何加载的,函数是否是静态的?每条信息都会有所帮助。

最佳答案

模块中的函数等同于类中的静态方法。当多个线程可能正在修改共享数据,甚至一个线程可能正在修改此类数据而其他线程正在读取时,就会出现线程安全问题;最好避免让数据由一个模块拥有(通过 Queue.Queue 从其他模块访问),但如果这不可行,您必须求助于锁定和其他更复杂的同步原语。

这适用于对共享数据的访问是否发生在模块函数、静态方法或实例方法中——共享数据是这样的,无论它是实例变量、类变量还是全局变量(作用域和线程安全本质上是不相交的,除了函数本地数据,从某种意义上说,本质上是线程安全的——没有其他线程会看到函数实例中的数据,除非函数有意通过共享容器“共享”它。

如果您使用 Python 标准库中的 multiprocessing 模块,而不是 threading 模块,您实际上可能不必关心“线程安全”——本质上因为没有数据在进程之间共享......好吧,除非你不厌其烦地改变它,例如通过 mmapped 文件;-).

关于python - 静态方法和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com