请注意,以下所有说明均为w.r.t.多重处理的“ spawn”方法(与Windows兼容)。
将多重处理设置为“生成”方法时,将从主文件中加载新的处理。这是第一个通过在线搜索找到的信息。
我正在尝试更深入地研究,并加快新流程的加载(无论何时创建)。
这是关于我的项目的结构的一些想法:
<root>
<root>/main.py
<root>/modules/__init__.py
<root>/modules/app/__init__.py
<root>/modules/app/app.py
<root>/modules/app/middleware/__init__.py
<root>/modules/app/middleware/middleware.py
现在,当我尝试在middleware.py
内创建一个进程时,它将尝试从main.py加载所有内容(并且加载了许多不必要的模块,这减慢了中间件中进程的加载过程.py)。
在我的代码中,main.py和app.py中也导入了很多额外的库,这减慢了第一次加载在middleware.py中创建的进程的速度。但是运行这些在Middleware.py中创建的过程并不需要这些额外的模块
1)如何尽可能快地(在首次启动Process时)加载middleware.py。是否可以直接在此新流程中加载中间件模块,而不是从main.py中加载所有内容?
2)我进行了实验,每当main.py以__mp_main__
的身份运行时,有条件地不将app.py加载到main.py中(因此也不会加载middleware.py)。我期望这会导致Middleware.py永远不会在子进程中加载。但是我仍然注意到middleware.py已加载。这怎么可能?