-1

Python でファイル コピー プロセスを操作するためのユーティリティ ソフトウェアを作成しました。メモリリークの問題である可能性があるようです。

私が試してみました:

  • Shutil モジュールを使用してコピーする
  • バイトのチャンクをコピーして遅延操作を使用する
  • ファイルデータをLINEごとにコピーする
  • Fileinput モジュールの使用
  • バッファを何百万回も調整する
  • コピーファイル部分をCで書いて、それをpythonで拡張。

...しかし、これはどれもうまくいきませんでした。

ファイル スクリプトGUI スクリプトへのリンクは次のとおりです。

2 Gb の RAM を搭載した Windows 7 を使用しています。

誰でも助けてもらえますか?

4

2 に答える 2

1

メモリよりも大きいファイルをコピーすると、メモリが2 GBしかないため、問題が発生します。ファイル全体をメモリにロードしないでください。代わりに、私は次のようなことをします:

with open(myLargeFile) as f:
   with open(myOtherLargeFile, "w") as fo:
   for line in f:            
      fo.write(line)

これには時間がかかる可能性があるため、これをGUIとは別のスレッドに配置する必要があります。そうしないと、GUIがハングしているように見えます。wxPythonのそのトピックに関するいくつかのリンクは次のとおりです。

于 2012-08-15T13:37:30.907 に答える
0

この問題の適切なアプローチは次のとおりです。

  • マルチプロセッシングまたはマルチスレッドを使用する
  • ファイルをチャンクに分割する
  • どのチャンクがどのファイル名、ファイルパス、およびチャンクオフセットに属するかを保存するためにpython dbmを使用します(file.seek関数の場合)
  • 読み取りチャンクと書き込みチャンクのキューを作成する
于 2012-08-15T07:49:17.233 に答える