为什么同一个Python Torrent程序被多次执行会打印出不同的列表?

2024-10-02 00:42:10 发布

您现在位置:Python中文网/ 问答频道 /正文

简短问题描述:

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

我自己的代码是完全确定的,我相信我使用的库过程也是确定的。我能弄清楚为什么会打印不同的列表的唯一原因是跟踪器返回不同的结果。是这样吗


Tags: 代码py程序客户端列表download作业torrent

热门问题