简短的问题描述:
python Download.py
[('131.111.185.76', 6969), ('131.111.5.154', 51413), ('199.180.253.176', 45384)]
python Download.py
[('131.111.185.76', 6969), ('131.111.5.154', 51413), ('199.180.253.176', 45384)]
python Download.py
[('131.111.185.76', 6969), ('131.111.5.154', 51413), ('199.180.253.176', 45384)]
python Download.py
[('131.111.185.76', 6969), ('199.180.253.176', 45384), ('131.111.5.154', 51413)]
运行相同的确定性程序,第四次输出不同。为什么?
更详细的解释
我正在编写自己的 torrent 客户端(大学作业)。我开始提取对等列表(即:元组列表(IpAddress,端口))。出于调试目的,我想打印列表。多次运行程序后,我得到了以不同顺序打印的列表元素。
这是一小段代码:
import bencode;
.... # some code ommited
# 2) Sending GET request to the tracker
trackersResponse = requests.get(fileMetadata['announce'], params = parameters);
# 3) Decoding trackers response
decodedTrackersResponse = bencode.bdecode(trackersResponse.content) ['peers'];
peersList = PeersListDecoder.decodePeersList(decodedTrackersResponse);
print peersList; # This line prints weird results
我自己的代码是完全确定的,我相信我使用的库过程也是确定的。我能弄清楚为什么要打印不同的列表的唯一原因是跟踪器返回不同的结果。会是这样吗?