避免多处理.池来运行全局



我目前在Python工作。我需要与多处理工作。池并将当前工作目录设置为文件然后将父目录添加到sys.path。问题是,当进行多处理时。Pool启动,它再次运行sys.path.insert(0,'..'),这是我想避免的。有没有办法使多处理。池没有运行全局或if __name__ == "__main__":代码片段之外的任何东西?

import os
import sys
import multiprocessing
os.chdir(sys.path[0])
sys.path.insert(0,'..')
print(os.getcwd())
def Worker(j):
pass
if __name__ == "__main__":
with multiprocessing.Pool(1) as p:
p.map(Worker, range(10))
p.close()
p.join()

所以多进程的工作方式是,当它到达p.map(Worker, range(10))行时,它将启动一个新的子进程,并运行整个脚本还是从第1行开始(新的子进程将导入调用模块)。if下的行不会在子进程中再次运行。为了避免sys.path.insert(0,'..')在子进程中重复,您需要将该行放在if下面。

查看详细信息

import os
import sys
import multiprocessing

def Worker(j):
pass
if __name__ == "__main__":
os.chdir(sys.path[0])
sys.path.insert(0,'..')
print(os.getcwd())
with multiprocessing.Pool(1) as p:
p.map(Worker, range(10))
p.close()
p.join()

相关内容

  • 没有找到相关文章

最新更新