python - 如何同时运行相同的 python 代码但不同的输入?
问题描述
我有一个科学模拟代码,可以进行大量计算(求解 ODE),这需要几天时间。
- 该代码创建一个保存输出的文件夹。
- 如果创建的文件夹存在,代码会创建另一个文件夹。
- 代码读取一些初始
.txt
文件但不更改它们。 - 我没有任何安装文件或二进制文件。我基本上像这样运行模拟
python3 runSimulation.py
- 在运行结束时,代码删除
__pycache__
和其他临时文件夹。
我想问,如果我用一些输入(txt
文件)运行代码,在它完成之前,我用另一个输入再次运行代码,这种情况会发生任何差异吗?你能建议另一种方式(或最好的方式或最pythonic的方式)吗?
当我尝试它时,我没有看到结果之间有任何差异,但我想说服自己。为了避免这种情况,我总是复制代码并在不同的位置针对不同的输入运行它。
解决方案
每次运行脚本时,都会创建一个新进程。因此,假设您同时运行程序 5 次:将创建 5 个进程。进程之间不共享内存/范围。因此,它们是完全独立的,互不影响。运行您的程序是安全的。但是,请确保您的代码在每个进程中输出到不同的文件。
编辑:
为确保每次运行单独的进程时使用不同的文件,请创建一个随机数,或者更好的 uuid,并使用此随机字符串命名您的文件夹。
例如
import uuid
random_string = str(uuid.uuid4())
my_new_path = '/home/user/my-project/' + random_string + '/output'
这样,每次运行脚本时,都会创建一个具有唯一名称的新文件夹/文件,您可以将结果输出到该文件夹/文件。
推荐阅读
- ios - 如何从 .POST HTTP 请求访问重定向的 URL 响应
- python - Kivy - 错误的垂直分离器
- fish - find 命令的结果到列表中
- javascript - 用本地文件理解 Papaparse
- git - 将 master 合并到分支并解决了冲突,但仍然在 bitbucket PR 上遇到合并冲突?
- java - 如何在 Java 中修复 ArrayIndexOutOfBoundsException?
- java - 如何将按钮的 BackgroundTintList 设置为默认值?
- r - R循环遍历数据帧
- java - 为什么我在从 Firebase 接收到有效数据后收到空字符串?
- python - Python 中的工作流框架