首页 / PYTHON / Pythonic线程安全对象
Pythonic线程安全对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Pythonic线程安全对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1147字,纯文字阅读大概需要2分钟。
内容图文
![Pythonic线程安全对象](/upload/InfoBanner/zyjiaocheng/720/11036637b8934c06aaafedb7fbe6aebe.jpg)
在阅读了很多关于这个主题并讨论IRC之后,反应似乎是:远离线程.很抱歉重复这个问题,我的目的是通过不接受“线程是邪恶的”答案来深入探讨这个问题,并希望找到一个共同的解决方案.
编辑:对锁定,死锁,锁粒度,活锁,非确定性和竞争条件的综合弊端说不. –Guido van Rossum
我正在开发一个Python Web应用程序,我想为每个用户创建一个只能由当前用户访问的全局对象. (例如请求的URI)
建议的方法是传递对象,IMO使应用程序更难维护,如果我在不同的地方需要相同的值(有些可能是第三方插件),则不是漂亮的代码.
我看到许多流行的框架(Django,CherryPy,Flask)使用Python线程锁来解决问题.
如果所有这些框架都违背了Pythonic方式并且感觉需要创建一个全局可访问的对象,那就意味着社区需要这样的东西.我也是.
传递物体的“最佳”方式是什么?
是使用“邪恶”线程锁的唯一替代解决方案吗?
将此信息存储在数据库或memcached中会更加Pythonic吗?
提前致谢!
解决方法:
如果您不想锁定,则要么不使用全局变量,要么使用线程本地存储(在webapp中,您可以相当确定请求不会跨越线程边界).如果可以避免全球状态,则应该避免.这使得多线程方式更易于实现和调试.
我也不同意传递对象会使应用程序更难维护 – 通常是相反的方式 – 除了需要仔细同步之外,全局状态还隐藏了依赖关系.
好吧,还有无锁等方法,比如STM或诸如此类的东西,但它可能对于Web应用程序来说太过分了.
内容总结
以上是互联网集市为您收集整理的Pythonic线程安全对象全部内容,希望文章能够帮你解决Pythonic线程安全对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。