複数のファイルを並列にダウンロードするダウンローダ機能があります。 私はmultiprocessing.Pool.map_async
を使用して、同じファイルの異なるチャンクをダウンロードします。 ダウンロードのステータスバーを表示したいと思います。このため、私は既にダウンロードされた合計バイト数を知る必要があります(total_bytes_dl
)。プロセス間で変数を共有する
pool = multiprocessing.Pool(processes)
mapObj = pool.map_async(f, args)
while not mapObj.ready():
status = r"%.2f MB/%.2f MB" % (total_bytes_dl/1024.0/1024.0, filesize/1024.0/1024.0,)
status = status + chr(8)*(len(status)+1)
print status,
time.sleep(0.5)
これらすべてのプロセスと主要プロセス間で共有される変数なので、すべてのプロセスがちょうどダウンロードしたバイトの量を追加することができますを設定する方法はありますか?あなただけのバイトはそれが何をすべきダウンロードしたい場合は
ctypes共有オブジェクトをマップすることはできません: 'RuntimeError:同期されたオブジェクトは、継承を介してプロセス間でのみ共有する必要があります' – iTayb