变量在内存缓冲区中。您可以通过运行(如果您只有一个正在运行的 python 进程)看到这一点(在 Linux 上)
pidof python | awk '{print "lsof -a -p "$1}' | bash
样本输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 19858 jazzpi cwd DIR 8,1 12288 135854 /home/jazzpi
python 19858 jazzpi rtd DIR 8,1 4096 2 /
python 19858 jazzpi txt REG 8,1 2728836 532918 /usr/bin/python2.7
python 19858 jazzpi mem REG 8,1 125424 57 /lib/i386-linux-gnu/libtinfo.so.5.9
python 19858 jazzpi mem REG 8,1 247008 237 /lib/i386-linux-gnu/libreadline.so.6.2
python 19858 jazzpi mem REG 8,1 21648 131133 /usr/lib/python2.7/lib-dynload/readline.so
python 19858 jazzpi mem REG 8,1 2965552 530650 /usr/lib/locale/locale-archive
python 19858 jazzpi mem REG 8,1 114788 13 /lib/i386-linux-gnu/libgcc_s.so.1
python 19858 jazzpi mem REG 8,1 1437864 4337 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so
python 19858 jazzpi mem REG 8,1 148996 4334 /lib/i386-linux-gnu/i686/cmov/libm-2.13.so
python 19858 jazzpi mem REG 8,1 95896 129 /lib/i386-linux-gnu/libz.so.1.2.7
python 19858 jazzpi mem REG 8,1 9800 4326 /lib/i386-linux-gnu/i686/cmov/libutil-2.13.so
python 19858 jazzpi mem REG 8,1 9844 4330 /lib/i386-linux-gnu/i686/cmov/libdl-2.13.so
python 19858 jazzpi mem REG 8,1 117009 4327 /lib/i386-linux-gnu/i686/cmov/libpthread-2.13.so
python 19858 jazzpi mem REG 8,1 26064 523330 /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache
python 19858 jazzpi mem REG 8,1 117960 35 /lib/i386-linux-gnu/ld-2.13.so
python 19858 jazzpi 0u CHR 136,3 0t0 6 /dev/pts/3
python 19858 jazzpi 1u CHR 136,3 0t0 6 /dev/pts/3
python 19858 jazzpi 2u CHR 136,3 0t0 6 /dev/pts/3
您可以看到它没有打开任何要写入的文件。另外,来自标签variable的StackOverflow描述:
变量是内存中的命名数据存储位置。
但是,当您的计算机内存不足时,它可以将 RAM 的内容写入磁盘(即 Windows 上的 pagefile.sys,Linux 上的交换分区)。当您将操作系统置于休眠模式时,通常也会发生这种情况。
写入交换是你的操作系统的最后手段,你应该尽量避免,因为从磁盘读取比从 RAM 读取慢很多(另见Teach yourself programming in 10 years)。
因此,如果您要处理的输出大到足以导致 PC 的 RAM 溢出,您应该考虑在可能的情况下定期(例如每 10MB 左右)将该数据转储到磁盘上的临时文件中。
如果您想从输出流中读取数据,我还建议您查看this。