运行 .py 生成不同的输出而 .exe 没问题
Run .py generates different output whereas .exe is fine
我正在为我的日志转换器应用程序构建一个回归,它是用 Python 编写的。我发现一个很奇怪的情况,当直接用 运行ning Python 脚本 , "Python myConverter.py -i <input> -o <output>
" 直接转换时,输出通常会略有不同顺序,但是内容是一样的。就像 json 字符串中的元素顺序,或日志条目的顺序。
但是,如果我编译 Python 和 运行.exe,这不会发生。
E.g.
(log1)
foo={bar1:a, bar2:b, bar3:c, bar4:d}
(log2)
foo={bar3:c, bar4:d, bar1:a, bar2:b}
E.g.2
(log1)
line1
line2
line3
line4
line5
(log2)
line2
line1
line3
line5
line4
我的环境设置:
Python 2.6
这是一个单进程应用程序,我没有明确使用任何并行处理技术。
对于json serialize/deserialize,我使用“import json
”。
我觉得 Python 解释器对不同的 运行 产生不同的输出。知道这是怎么发生的吗?
更正:
运行将可执行文件执行 5 次后,我发现它也产生了不同的输出!!所以好像提到的评论,字典可能会导致这个问题。
这段代码说明了字典的顺序取决于插入的顺序:
>>> a = dict()
>>> b = dict()
>>> a[1] = None; b[9] = None
>>> a[9] = None; b[1] = None
>>> a
{1: None, 9: None}
>>> b
{9: None, 1: None}
Order of keys in a different Python dict()
我正在为我的日志转换器应用程序构建一个回归,它是用 Python 编写的。我发现一个很奇怪的情况,当直接用 运行ning Python 脚本 , "Python myConverter.py -i <input> -o <output>
" 直接转换时,输出通常会略有不同顺序,但是内容是一样的。就像 json 字符串中的元素顺序,或日志条目的顺序。
但是,如果我编译 Python 和 运行.exe,这不会发生。
E.g.
(log1)
foo={bar1:a, bar2:b, bar3:c, bar4:d}
(log2)
foo={bar3:c, bar4:d, bar1:a, bar2:b}
E.g.2
(log1)
line1
line2
line3
line4
line5
(log2)
line2
line1
line3
line5
line4
我的环境设置:
Python 2.6
这是一个单进程应用程序,我没有明确使用任何并行处理技术。
对于json serialize/deserialize,我使用“
import json
”。
我觉得 Python 解释器对不同的 运行 产生不同的输出。知道这是怎么发生的吗?
更正:
运行将可执行文件执行 5 次后,我发现它也产生了不同的输出!!所以好像提到的评论,字典可能会导致这个问题。
这段代码说明了字典的顺序取决于插入的顺序:
>>> a = dict()
>>> b = dict()
>>> a[1] = None; b[9] = None
>>> a[9] = None; b[1] = None
>>> a
{1: None, 9: None}
>>> b
{9: None, 1: None}
Order of keys in a different Python dict()