如果模块A是主启动器并且将导入具有全局data_set的模块B,那么多个实例在内存中是否具有唯一且独立的数据? 我担心的是,如果我在不同的应用程序中运行模块A的多个运行实例,那么模块A和模块A中的数据将会被运行。 B互相影响?
如果流程P和流程Q都在运行模块A,流程P中的数据是否会影响流程Q中的数据?
我没有持久数据,它都是运行时。
基本上,我有模块B,它是一个utils文件,但是有几个辅助函数依赖于我传递的全局数据缓存(字典或列表或w / e)。我想确保当我运行几个不同的进程时它们不会混合,因为变量名称空间是相同的。
moduleA.py
import moduleB
def main():
data = [x for x in range(100)]
moduleB.dosomething(data)
moduleB.py
global data_cache = []
def function1(x):
global data_cache
data.cache.append(x)
def dosomething():
fucntion1(data.cache.pop())
答案 0 :(得分:1)
进程不共享进程内存。模块在单个进程中具有独立但持久的范围。从模块而不是模块本身导入名称会生成对象的浅表副本。