简短问题说明:
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,port))。 出于调试目的,我想打印列表。 在多次运行程序后,我得到了以不同顺序打印的列表元素。
以下是一小段代码:
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
我自己的代码是完全确定的,我相信我使用的库程序也是确定性的。我可以弄清楚为什么打印不同列表的唯一原因是因为跟踪器会返回不同的结果。可能是这样吗?