运行 .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 解释器对不同的 运行 产生不同的输出。知道这是怎么发生的吗?



更正:

运行将可执行文件执行 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()