在本地运行python脚本与在docker中运行python之间的区别

时间:2019-09-10 05:15:59

标签: python python-3.x docker memory-management

我写了一个代码来产生内存错误,但是当我在我的机器上本地运行它(即Mac OS)时,我能够得到内存错误,但是当我在分配了有限内存的docker python容器中运行此代码时,却没有抛出任何错误。我不知道为什么抱歉,如果您发现这只la脚。

这是代码:

def str_append(s):
    output = ''
    i = 0
    for i in range(100000000000000000):
        output += s
        i = i + 1
    print(sys.getsizeof(output))
    return output.encode('latin1')
print(str_append(string).decode('latin1'))

Docker文件代码

FROM python:3.6

WORKDIR /usr/src/app

# Bundle app source
COPY /test2.py .

EXPOSE 8080

CMD ["python", "test2.py"]

首先,我使用docker build -t mypytest .

构建图像

之后,我用docker run -m=23M -memory-swap=30M mypytest

运行它

但是当我检查统计信息时,它挂起但没有产生任何输出: Docker Stats After Running The Image

1 个答案:

答案 0 :(得分:1)

它像这样

脚本:

import sys
def str_append(s):
    output = ''
    i = 0
    for i in range(100000000000000000):
        output += s
        i = i + 1
        print(sys.getsizeof(output))
    return output.encode('latin1')
string = "hi"
str_append(string).decode('latin1')

2分钟后:

fc63c2658920        mypytest            "python test.py"         56 seconds ago      Exited (137) 9 seconds ago                       blissful_grothendieck

CPU和内存为100%

杀死时的大小为2609073726090737

PS 设置您的身份以进行打印,以便能够看到某些内容(例如我添加的代码中的内容)