多次运行同一个python脚本会混合变量

多次运行同一个python脚本会混合变量,python,Python,我想将一些数据传递给另一个python脚本,并在那里做一些事情。但如果使用不同的参数同时多次运行脚本,则发送的数据会发生冲突。我怎样把它们分开 示例代码: main.py otherscript.py 如果我使用参数1,2,3和4,5,6同时运行main.py两次,它会在同一个列表中打印这两个参数,如[1,2,3,4,5,6]。我希望我已经清楚地说明了这一点我只是将main.py简化如下 import otherscript import sys list_a = [int(item) for

我想将一些数据传递给另一个python脚本,并在那里做一些事情。但如果使用不同的参数同时多次运行脚本,则发送的数据会发生冲突。我怎样把它们分开

示例代码:

main.py

otherscript.py

如果我使用参数1,2,3和4,5,6同时运行main.py两次,它会在同一个列表中打印这两个参数,如[1,2,3,4,5,6]。我希望我已经清楚地说明了这一点

我只是将main.py简化如下

import otherscript

import sys
list_a = [int(item) for item in sys.argv[1:]]
otherscript.append_to_another_list(list_a)
然后,当我使用python3.7 main.py 1 2 3和python3.7 main.py 4 5 6将它们一起运行时,我得到了输出

[[1, 2, 3]]
[[4, 5, 6]]
此外,如果打开同一个终端并两次运行append_to_other_list命令,输出将更改,因为您引用的是同一个列表

In [2]: import otherscript                                                      

In [3]: otherscript.append_to_another_list([1,2,3])                             
[[1, 2, 3]]

In [4]: otherscript.append_to_another_list([4,5,6])                             
[[1, 2, 3], [4, 5, 6]]
我只是将main.py简化如下

import otherscript

import sys
list_a = [int(item) for item in sys.argv[1:]]
otherscript.append_to_another_list(list_a)
然后,当我使用python3.7 main.py 1 2 3和python3.7 main.py 4 5 6将它们一起运行时,我得到了输出

[[1, 2, 3]]
[[4, 5, 6]]
此外,如果打开同一个终端并两次运行append_to_other_list命令,输出将更改,因为您引用的是同一个列表

In [2]: import otherscript                                                      

In [3]: otherscript.append_to_another_list([1,2,3])                             
[[1, 2, 3]]

In [4]: otherscript.append_to_another_list([4,5,6])                             
[[1, 2, 3], [4, 5, 6]]

如果您从操作系统命令行(比如bash)调用这两次,您会期望它们完全独立,而不是显示OP描述的行为

另一方面,在单个Python解释器中,一个模块只初始化一次,因此otherscript模块中的列表(它是一个模块而不是一个脚本)将保持不变,并一直被追加到

在任何情况下,对于更精细的控件,最好的选择可能是类

类列表管理员: 定义初始自我: self.other_list=[] def将_附加到另一个_列表自身,列表: self.other_list.appendlist 打印另一个列表 您的main.py如下所示:

导入其他脚本 列表_a=[1,2,3]来自参数 keeper1=otherscript.ListKeeper keeper1.在另一个列表中添加
您可以根据需要创建任意多个实例,所有实例都相互独立,并且都保持自己的状态。

如果您从操作系统命令行(例如bash)调用这两次,您会希望它们完全独立,而不是显示OP描述的行为

另一方面,在单个Python解释器中,一个模块只初始化一次,因此otherscript模块中的列表(它是一个模块而不是一个脚本)将保持不变,并一直被追加到

在任何情况下,对于更精细的控件,最好的选择可能是类

类列表管理员: 定义初始自我: self.other_list=[] def将_附加到另一个_列表自身,列表: self.other_list.appendlist 打印另一个列表 您的main.py如下所示:

导入其他脚本 列表_a=[1,2,3]来自参数 keeper1=otherscript.ListKeeper keeper1.append\u到另一个\u列表\u a
您可以根据需要创建任意多个实例,所有实例都相互独立,并且都保持各自的状态。

同时创建实例是什么意思?如何同时运行它?我在另一个终端窗口上运行main.py-l 123,然后运行main.py-l 456,第二个窗口将同时打印这两个窗口。What is-l标志是什么?你应该把它包括在main.py中example@DeveshKumarSingh这里很难包含实际的代码,所以我想简化这个问题。主要问题是otherscript的另一个_列表变量在实例之间共享,并且对于每个正在运行的Main.py文件,它应该是独立的,这在我的脚本中是一个无限循环example@ggnoredo此代码将新列表附加到“另一个列表”中。你能告诉我更多你想解决的细节吗?同时你是什么意思?如何同时运行它?我在另一个终端窗口上运行main.py-l 123,然后运行main.py-l 456,第二个窗口将同时打印这两个窗口。What is-l标志是什么?你应该把它包括在main.py中example@DeveshKumarSingh这里很难包含实际的代码,所以我想简化这个问题。主要问题是otherscript的另一个_列表变量在实例之间共享,并且对于每个正在运行的Main.py文件,它应该是独立的,这在我的脚本中是一个无限循环example@ggnoredo此代码将新列表附加到“另一个列表”中。你能告诉我你想解决什么问题的更多细节吗?我同意,从命令行运行OP的代码是这样的。我想知道他们是否在以其他方式运行代码,而不是从原始命令行,这样它们都在一个Python进程中。是的,您永远不能在同一个终端上运行两个命令,正如OP在注释中所述!我同意,从命令行运行OP代码的行为如下所示。我想知道他们是否在以其他方式运行代码,而不是从原始命令行,这样它们都在一个Python进程中。是的,您永远不能在同一个终端上运行两个命令,正如OP在注释中所述!