私のPythonプロセスがすべてのメモリにアクセスできないのはなぜですか?

私のPythonプロセスがすべてのメモリにアクセスできないのはなぜですか?

Linuxサーバーに62GBのRAMがあり、Pythonコードがメモリに20GBのファイルをロードしようとしています。しかしそれは散らかったMemoryError

なぜこれが必要なのかわかりません。

ファイルを徐々にロードでき、このエラーを軽減できることがわかります。

しかし、私の質問はより基本的です。利用可能なメモリが多すぎても、Pythonがこのファイルをメモリにロードできないのはなぜですか?

と入力するとがulimit表示されますunlimited

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 256797
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

それでは、私のプロセスがメモリにアクセスできないのはなぜですか?

free -mg:

              total        used        free      shared  buff/cache   available
Mem:             62           1          52           0           8          61
Swap:            31           0          31
def read_from_file(file_name):
    with open(file_name, mode='rt', encoding='utf-8') as reader:
        text = reader.read()
        return text

ベストアンサー1

20Gのテキストデータを含むテキストファイルを読み取るには(エンコードがutf-8であると仮定します)、データをPython文字列にデコードする前に、まずファイルの内容をバイナリチャンクとして読み取る必要があります。

utf-8_text.txt次の4つのUTF-8文字(改行なし)で名前付きテキストファイルがあるとします。

aä猫

おすすめ記事