我有一个python脚本需要一段时间才能完成执行,具体取决于传递的参数。因此,如果我从两个具有不同参数的终端运行它们,它们是否获得了自己的代码版本?我看不到正在生成两个.pyc
个文件。
终端1运行:python prog.py 1000 > out_1000.out
在终端1上运行的脚本终止之前,我开始运行另一个;因此终端2运行:python prog.py 100 > out_100.out
或者基本上我的问题是它们是否会相互干扰?
答案 0 :(得分:10)
我正在将输出写入磁盘中的同一文件,然后是,它将被覆盖。但是,您似乎将输出打印到标准输出,然后将它们重定向到文件。所以情况并非如此。
现在回答你的问题很简单:同一代码的两个不同执行之间没有交互。执行程序或脚本时,第一个OS会将代码加载到内存中然后执行。对代码的后续更改与已运行的代码无关。从技术上讲,正在运行的程序称为进程。当您在两个不同的终端上运行代码时,操作系统上将有两个不同的进程,每个进程一个,除非您明确这样做(IPC或进程间通信),否则两个进程无法进行干扰。不在这里
总而言之,您可以在不同的终端上同时运行您的代码,它们将是完全独立的。
答案 1 :(得分:3)
每个Python解释器进程都是独立的。脚本如何对自身的多次运行做出反应取决于使用的确切代码,但一般它们不应该干扰。
答案 2 :(得分:0)
Python会自动将脚本编译为已编译的代码 字节代码,在运行之前。为第一个导入模块时 时间,或者当源比当前编译的更新时 文件,通常会创建包含已编译代码的.pyc文件 与.py文件在同一目录中。
如果您担心因错误而导致代码被覆盖,您应该学会将代码置于VERSION CONTROL之下。注册github并使用git来做到这一点。
更大的标志“>”将输出发送到正确的处理程序。它指定文件名,它会将输出推送到该文件名。即使在不同的终端中,如果您在同一文件夹中运行代码,请使用“>”指向SAME文件名,“>”右侧的文件肯定会被覆盖。
程序源代码在执行期间不可变。除非你获得高级程序黑客技能。
每个程序都将在其“执行工作区”内运行。除非您制作的代码可以使用相同资源(例如更改相同文件,共享资源),否则不会产生干扰。 (除非一个排气所有CPU,内存资源,第二个将干扰,但那是其他故事)