关于linux:Python进程,OSError[Errno 12]无法分配内存

在一台Linux服务器下运行 Python 脚本,报了如下错误:

1
sp.Popen self.pid = _posixsubprocess.fork_exec( OSError: [Errno 12] Cannot allocate m

于是尝试 用 free -m ,查看服务器内存情况

1
2
watch -n 2 free -m
全程监视电脑CPU、GPU,以及物理内存、交换区内存的变化情况

如下:

1
2
3
4
[xxxxxxxx]# free -m
total used free shared buff/cache available
Mem: 990 133 73 56 783 659
Swap: 0 0 0

可以知道,服务器上没有实际可以用的交换内存,于是开始添加 1GB 的交换内存。

1、首先检查一下是否含有交换内存

1
$sudo swapon -s

2、如果为空,则表示您没有启用任何交换。 要添加1GB交换空间:

1
2
3
$sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
$sudo mkswap /swapfile
$sudo swapon /swapfile

3、添加以下内容到fstab

1
2
3
$sudo vim /etc/fstab
# 内容
/swapfile none swap sw 0 0

4、再次运行

1
2
3
4
$sudo swapon -s

Filename Type Size Used Priority
/swapfile file 1048572 0 -2

最后,重新执行 Python ,这次并无报错。

关于linux:Python进程,OSError[Errno 12]无法分配内存

http://fahsa.cn/linux/linux-sp-Popen-posixsubprocess-OSError-allocate/

作者

Fahsa

发布于

2021-11-04

更新于

2021-11-04

许可协议

评论