Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu与Windows上python内存泄漏_Python_Windows_Ubuntu_Memory_Amazon Ec2 - Fatal编程技术网

Ubuntu与Windows上python内存泄漏

Ubuntu与Windows上python内存泄漏,python,windows,ubuntu,memory,amazon-ec2,Python,Windows,Ubuntu,Memory,Amazon Ec2,我正在尝试运行一个计算密集型python程序,内存占用量约为300Mb,并且受到本地机器的限制,这台机器是4核i5 Intel w/4GB RAM,运行64位Windows 7。 我决定通过在数据集的3个分区上运行3个python进程来手动执行多进程,MIMD风格,因为python在单个控制台上只使用25%的cpu。这些进程一直在以25%的cpu和~300Mb的内存缓慢运行。然而,我仅限于在所有工作过程中使用这台机器,并希望利用AWS EC2来减轻计算负担 我启动了3个Ubuntu14.4EC2

我正在尝试运行一个计算密集型python程序,内存占用量约为300Mb,并且受到本地机器的限制,这台机器是4核i5 Intel w/4GB RAM,运行64位Windows 7。 我决定通过在数据集的3个分区上运行3个python进程来手动执行多进程,MIMD风格,因为python在单个控制台上只使用25%的cpu。这些进程一直在以25%的cpu和~300Mb的内存缓慢运行。然而,我仅限于在所有工作过程中使用这台机器,并希望利用AWS EC2来减轻计算负担

我启动了3个Ubuntu14.4EC2实例,每个实例有1个虚拟CPU和1GB内存,复制了精确的数据集和代码,并试图通过screen和sudo nohup python program.py在后台运行三个相同的程序,每个VM上一个

然而,ubuntu实例上的内存使用率要高得多,达到100%的使用率,并导致内存错误

是什么导致了Ubuntu和Windows之间内存使用的差异?假设我已经优化了我的程序,即避免了侵入性的代码重构,我能做些什么来修复它

我已经研究过unix上的内存限制,但我相信这只会导致我的程序更快地出现内存错误

下面是在我的后台python进程结束后从dmesg输出的一个示例

[ 1326.630939] python[1200]: segfault at 24 ip 0000000000537632 sp 00007fff55111400       error 6 in python2.7[400000+2bd000]
我在这两台机器上都运行标准的Python2.7.6,并且只使用标准模块,numpy除外。 我看到了这一点,并在python和ubuntu上检查了我的64位代码

每个Ubuntu EC2机器只运行一个进程:

$ screen
$ sudo nohup python program.py &
上图显示python.exe在99%的cpu下平稳运行,并以较低的%内存启动,但内存%缓慢增长

我在本地的Windows机器上打开了3个shell,并在每个shell中执行

$ python program.py

TaskManager显示所有3个python进程的平坦、一致的内存使用情况。

已更新。程序本身不是多线程的,尽管我尝试了线程模块。通过多线程处理,每个条目的运行时间增加了一个数量级@ScottLawsonI也有一个类似的segfault[417.876501]python[4295]:segfault位于24 ip 0000000000 517B4C sp 00007fff24d8b360错误6在python中[400000+2bd000]它只出现在digitalocean实例中,无法在本地复制。尝试了OSX和Ubuntu。在运行大型MongoDB作业的EC2 Ubuntu实例上出现了相同的错误。找不到任何修复程序。