3

ループ内で tqdm を適切にネストする方法がわかりません。xmlrpc インターフェイスを介して aria2 ダウンロードの進行状況を取得しようとしています。tqdm は進行状況を読み取ることができますが、更新のたびにそれを新しい行に配置するため、端末にスパムが送信されます。コードは次のとおりです。

s = xmlrpc.client.ServerProxy("http://localhost:6800/rpc")

r = s.aria2.addUri(["http://ipv4.download.thinkbroadband.com/100MB.zip"],
                   {"dir": "/Downloads/ariatest"})

while True:
    globalstat = s.aria2.getGlobalStat()
    activeglobal = int(globalstat['numActive'])
    activeconnections = s.aria2.tellActive()

    if activeglobal > 0:
        totalLength = int(activeconnections[0]['totalLength'])
        completedLength = int(activeconnections[0]['completedLength'])
        with tqdm(total=totalLength, unit='B', unit_scale=True, unit_divisor=1024, leave=True) as pbar:
            pbar.update(completedLength)
            time.sleep(0.1)
    else:
        print('all done')
        break

そしてそれが与えるものは次のとおりです:

 26%|██▌       | 6.38M/25.0M [00:00<00:00, 890GB/s]
 26%|██▌       | 6.42M/25.0M [00:00<00:00, 843GB/s]
 26%|██▌       | 6.46M/25.0M [00:00<00:00, 874GB/s]
 26%|██▌       | 6.48M/25.0M [00:00<00:00, 877GB/s]
 26%|██▌       | 6.51M/25.0M [00:00<00:00, 597GB/s]
 26%|██▌       | 6.54M/25.0M [00:00<00:00, 654GB/s]
 26%|██▋       | 6.58M/25.0M [00:00<00:00, 839GB/s]
 26%|██▋       | 6.62M/25.0M [00:00<00:00, 963GB/s]
 27%|██▋       | 6.67M/25.0M [00:00<00:00, 931GB/s]

今のところ、最初の aria2 ダウンロード、つまり activeconnections[0] を使用していますが、最終的には、xmlrpc 応答リストにあるダウンロードごとにプログレスバーを生成することが目標です。

本当にありがとう。

4

0 に答える 0