我在我的代码中使用了multiprocessing.Pool模块,我使用pool.map()函数并行运行列表中的项目,我想为列表中的每个项目创建一个单独的工作目录执行pool.map函数。列表项包含模型,它们将在模拟函数中进行模拟。目前我的代码看起来像这样
items=['BouncingBall.mo','HelloWorld.mo']
from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool
pool = ThreadPool()
pool.map(parallel,items)
def simulate(lists):
np='some directory path'
os.chdir(np)
model.simulate(lists)
模拟函数将模拟列表中的每个模型并生成结果文件,我想在不同目录中执行列表中的项目,我尝试使用os.chdir(),它创建了两个目录,但结果存储在两个模型的一个目录,如何在两个不同的目录中执行结果文件。是否可以为每个进程创建不同的目录并单独执行
答案 0 :(得分:1)
这个电话:
os.chdir(np)
影响所有线程(和主线程),因为它们都属于相同的进程。
您应该使用完整路径打开写入的文件,而不是全局更改目录。
如果您使用的是实际流程,那么这不会发生,因为您在隐式fork
来电之后会有不同的流程。
您的选择是:
好像你必须选择1或2。