多控制台并行运行Dymos优化时出现SLSQP.out文件权限错误
解决Dymos多任务并行运行时SLSQP.out文件占用错误
问题根源很明确:多个SLSQP驱动实例默认都会写入同一个SLSQP.out文件,Windows系统下不允许多个进程同时读写同一个文件,所以触发了权限错误。下面是几个直接可行的解决办法:
给每个任务指定独立的输出文件
在初始化SLSQP驱动时,手动设置不同的输出文件名,让每个任务的日志文件互不干扰。示例代码如下:import openmdao.api as om from dymos import Phase, Trajectory # 初始化问题和驱动 prob = om.Problem() driver = prob.driver = om.ScipyOptimizeDriver() driver.options['optimizer'] = 'SLSQP' # 给当前任务设置唯一的输出文件名,比如对应任务(1/A)就设成这个 driver.options['output'] = 'SLSQP_task_1A.out' # 后续添加你的Dymos轨迹、相位等配置...其他控制台的任务就改成
SLSQP_task_1B.out这类不同的名字即可。清理残留的Python进程
有时候之前的任务没正常终止,后台进程还在占用SLSQP.out文件。打开Windows任务管理器,找到所有名为python.exe或pythonw.exe的进程,关掉那些和Spyder相关的残留进程,再重新启动任务。调整Spyder的运行配置
打开Spyder的Tools > Preferences,进入Run选项卡,勾选Run in a dedicated console for each file,确保每个任务运行在完全独立的进程空间里,减少文件共享冲突的概率。临时禁用输出文件(如果不需要日志)
要是你不需要SLSQP的输出日志,可以直接关闭文件生成:driver.options['output'] = None这样就不会创建
SLSQP.out文件,自然也就不会有占用冲突了。
内容的提问来源于stack exchange,提问作者J_Code
相关产品推荐
相关产品推荐

