Python zipfile モジュールまたは UNIX コマンド ライン ユーティリティを使用して、必要に応じて ZIP アーカイブを作成する必要があります。
多くの場合、圧縮されるリソースは 1GB を超えており、必ずしも圧縮に適しているとは限りません。
作成時間/サイズを効率的に見積もるにはどうすればよいですか?
Python zipfile モジュールまたは UNIX コマンド ライン ユーティリティを使用して、必要に応じて ZIP アーカイブを作成する必要があります。
多くの場合、圧縮されるリソースは 1GB を超えており、必ずしも圧縮に適しているとは限りません。
作成時間/サイズを効率的に見積もるにはどうすればよいですか?
大きなファイルから小さなパーツの束を抽出します。たぶん、それぞれ64kの64個のチャンク。ランダムに選択されます。
データを連結し、圧縮し、時間と圧縮率を測定します。ファイルの一部をランダムに選択したため、データの代表的なサブセットを圧縮した可能性があります。
あとは、テスト データの時間に基づいてファイル全体の時間を見積もるだけです。
特定のサイズの zip を生成するのにかかる平均時間を測定することをお勧めします。次に、そのメジャーから見積もりを計算します。ただし、データがどれだけ圧縮されているかがわからない場合、見積もりはいずれにせよ非常に大雑把になると思います。圧縮したいデータが毎回非常に似た「プロファイル」を持っていれば、おそらくより良い予測ができるでしょう。
Python モジュールからプログレス コールバックを取得できる場合は、1 秒間に処理されるバイト数を調べることをお勧めします (単純に、ファイル内のどこに 2 番目の開始位置と終了位置を格納するかによって)。コンピューターの速度に関するデータを取得したら、もちろんそれを保存して、次の zip ファイルの基礎として使用できます。(私は通常、時間予測を表示する前に約 5 つのサンプルを収集します)
この方法を使用すると、マイクロソフトの議事録が得られるため、より多くのサンプルを取得して平均化する必要があります。これは特に、多数のファイルを含む zip ファイルを作成する場合に当てはまります。1 つの大きなファイルと比較して、多数の小さなファイルを圧縮すると ZIP の速度が低下する傾向があるためです。
ZipFile.write()メソッドを使用してファイルをアーカイブに書き込む場合は、次の操作を実行できます。
ただし、非常に大きなファイルを 1 つだけ圧縮する場合、これは機能しません。私は自分で zip モジュールを使用したことがないので、うまくいくかどうかはわかりませんが、少数の大きなファイルの場合は、 ZipFile.writestr() 関数を使用して、ファイルをチャンクで読み込み/圧縮することができます?