Python在函数中导入库以实现多线程

Python在函数中导入库以实现多线程,python,multithreading,function,global,Python,Multithreading,Function,Global,我有一个库,它使用了很多全局变量,我想在多线程应用程序中使用,但是我想知道的是,如果我在函数中导入库,库的全局变量等是否会是单独的副本,这样它们就不会相互损坏?否。只有一个“全局”变量实例(可能是在模块的顶层定义的) 模块只导入一次,第二次导入只会将其添加到相应的命名空间中。否。Python在此处具有模块范围,因此,您在该模块中定义的全局变量如果被其他线程突变而不锁定,将具有不可预测的行为 如果您想共享相同的对象,我会将您的代码重构为一组对象,而不使用全局变量,并可能实现锁定。如果它们是常量,这

我有一个库,它使用了很多全局变量,我想在多线程应用程序中使用,但是我想知道的是,如果我在函数中导入库,库的全局变量等是否会是单独的副本,这样它们就不会相互损坏?

否。只有一个“全局”变量实例(可能是在模块的顶层定义的)


模块只导入一次,第二次导入只会将其添加到相应的命名空间中。

否。Python在此处具有模块范围,因此,您在该模块中定义的全局变量如果被其他线程突变而不锁定,将具有不可预测的行为


如果您想共享相同的对象,我会将您的代码重构为一组对象,而不使用全局变量,并可能实现锁定。

如果它们是常量,这有关系吗?如果它们是实际的全局变量,那么你应该避免。不,它们是正确的全局变量,看起来我必须重写其中的一些。无论如何,谢谢。我认为全局变量永远都不合适;o) 该死,我就知道那太容易了。哦,是时候检查一下代码了,看看有多少代码可以重新编写。谢谢James,这是一个快速而肮脏的测试,可能只会运行几次,希望不必重写太多。我会重新考虑的。