【问题标题】:Thread safety in Python (Question how it works)Python中的线程安全(询问它是如何工作的)
【发布时间】:2010-07-02 08:37:31
【问题描述】:

我已经阅读了有关 python 线程的文档,并且我认为以下内容应该成立: 您可以访问(读取)任何 PoD 或 python 特定对象(例如数组),而不会导致多线程程序同时尝试相同的事情失败,但您不能更改它们并接受线程完整性。

我的问题是关于课程的。我有一个服务器将数据库访问委托给不同的线程,但是我希望它们能够全部访问处理响应生成的类的实例。但是,我想知道这个类是否是线程安全的(我希望避免创建多个实例),线程不会更改任何实例变量(即self.something = (something))每个函数都使用自己的局部变量(它们确实访问类实例变量,但不改变它们),所以总结一下:我的问题是是否许多线程可以使用同一个实例并同时调用函数。

【问题讨论】:

    标签: python multithreading


    【解决方案1】:

    局部变量是线程安全的,因为它们不在线程之间共享。所有常量(你永远不会从任何线程写入的变量)都是线程安全的。如果这就是你所拥有的,那么是的,那很好。确保您所谈论的班级成员确实不是来自任何其他线程。

    检查没有可能不是线程安全的底层共享资源,例如。如果每个线程都在使用可能导致问题的数据库连接对象,除非该对象被明确记录为线程安全的。

    【讨论】:

    • 好吧。谢谢,我会听取您的建议,并为每个线程单独建立数据库连接。
    猜你喜欢
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多