Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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
如果python处理太多bigtext,内存会溢出吗_Python_String_Memory - Fatal编程技术网

如果python处理太多bigtext,内存会溢出吗

如果python处理太多bigtext,内存会溢出吗,python,string,memory,Python,String,Memory,python将把所有字符串存储在athene_池中,并且永远不会释放它们,所以bigtext压缩最近困扰着我。 我将文章内容保存到redis,并从redisclient获取它们,然后将它们发送到http response。虽然序列化可能会导致内存过多,但有什么好办法来解决这种问题吗? 我想知道django是否生成了太多的响应,它如何释放这些响应以保持低内存?Python不会汇集所有字符串,请参阅 例如,此10K字符串不是池: >>> a = '5' * 10000 >&g

python将把所有字符串存储在athene_池中,并且永远不会释放它们,所以bigtext压缩最近困扰着我。 我将文章内容保存到redis,并从redisclient获取它们,然后将它们发送到http response。虽然序列化可能会导致内存过多,但有什么好办法来解决这种问题吗?
我想知道django是否生成了太多的响应,它如何释放这些响应以保持低内存?

Python不会汇集所有字符串,请参阅

例如,此10K字符串不是池:

>>> a = '5' * 10000
>>> b = '5' * 10000
>>> a is b
False
但合并了一个短的5个字符的字符串:


因此:您不必担心长字符串在内存中的保存时间过长。

关于“is”测试:python“is”操作符测试两个对象是否真的是同一个对象。在这种情况下,我滥用操作符来检查两个字符串是否合并为一个字符串。即使是短字符串也只有在源代码中作为字符串文本出现时才会合并(或者通过某个函数
sys
IIRC显式插入)。编译器常量将代码段中的
5
*5`折叠成
'55555'
,您将看到是否将其放入函数并在其上运行
dis.dis
>>> a = '5' * 5
>>> b = '5' * 5
>>> a is b
True