我通过python子进程调用lftp命令,并在lftp命令中使用pget的-n标志来设置最大连接数。现在,当下载正在进行时,将创建一个名为filename.lftp pget status的状态文件,下载结束后将自动删除该文件
下面是connections = 4
的状态文件的示例输出
$ cat abc_20200619.gz.lftp-pget-status
size=1837873446
0.pos=459472896
0.limit=459468363
1.pos=1301863572
1.limit=1378405085
2.pos=1735117533
2.limit=1837873446
我需要从状态文件跟踪下载进度。我很难理解内容,因为下载结束时分区也会减少。我编写了下面的公式来计算下载的数据字节数,但我认为这不是正确的方法
bytes_downloaded = 0.pos + (1.pos-0.limit) + (2.pos-1.limit) + (n.pos-(n-1).limit)
有人知道跟踪状态文件中的lftp下载吗
如果将“POS”和“限制”值对作为{(Pᵢ, Lᵢ) | 0 ≤ i < n},其中Lₙ₋₁是完整的大小,我们可以将以下属性定义为:p>
剩余字节数可以表示为Σᵢ₌₀ⁿ⁻¹(Lᵢ - Pᵢ)。因此,下载的字节数可以表示为Lₙ₋₁ - (Σᵢ₌₀ⁿ⁻¹(Lᵢ - Pᵢ))。这个表达式可以通过多种方式进行操作,如(Σᵢ₌₀ⁿ⁻¹(Pᵢ - Lᵢ)) + Lₙ₋₁,但最有用的编程方式可能是(Σᵢ₌₀ⁿ⁻¹(Pᵢ)) - (Σᵢ₌₀ⁿ⁻²(Lᵢ))。示例算法如下所示:
这个答案已经晚了,但希望对其他搜索者有所帮助
相关问题 更多 >
编程相关推荐