l = range(int(1E9))

Roel Schroeven roel at roelschroeven.net
Thu Apr 30 15:40:32 EDT 2015


Grant Edwards schreef op 2015-04-30 18:33:
> On 2015-04-30, Cecil Westerhof <Cecil at decebal.nl> wrote:
>> If I execute:
>>     l = range(int(1E9)
>>
>> The python process gobbles up all the memory and is killed. The
>> problem is that after this my swap is completely used, because other
>> processes have swapped to it. This make those programs more slowly.
>> Is there a way to circumvent Python claiming all the memory?
> 
> I presume "don't do that" has already occured to you?

A few weeks ago, I had a bug in a Python script which caused it to 
consume all memory, thrashed my computer; the system become unresponsive 
  and it was very difficult to kill the process and get everything back 
in working order.

Then I thought (foolishly) that the bug was fixed, so I ran the script 
again, with the same disastrous results. And then again. Stupid, I know.

A way to limit memory usage would have been nice: the script would have 
been killed before it could grind the whole system to a halt.

> You can always use ulimit to limit the memory allowed for the process
> running Python.

Sadly in my case the OS is Windows, and as far as I know it doesn't have 
a ulimit equivalent for limiting memory usage.

I guess I could have used 32-bit Python instead of 64-bit Python to 
limit available memory.


-- 
The saddest aspect of life right now is that science gathers knowledge
faster than society gathers wisdom.
   -- Isaac Asimov

Roel Schroeven




More information about the Python-list mailing list