I ran into the Memoryerror althogh the usage of memory was less than 1GB.
I am wondering whether python has the upper limit memory usage.
Even if so, I don't know how to set the upper limit memory usage.
I showed you my code as follows.
Could you help me, please ?
-------------------------------------------------------
Expand|Select|Wrap|Line Numbers
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- if __name__ == '__main__':
- pass
- import scipy
- import scipy.io
- import scipy.fftpack
- import scipy.stats
- import pylab
- import random
- import os
- import math
- import cmath
- h= 2.46342852e-03 # rms of height
- size_mesh = 1.0
- l= 85.16152053/math.sqrt(2.0)*80.0/512/size_mesh
- N= 512
- L= 512
- F = scipy.zeros((N,N),dtype=scipy.complex128 )
- for I in scipy.arange(0,N-1,1):
- for J in scipy.arange(0,N-1,1):
- Kx=2.0*math.pi*I/L
- Ky=2.0*math.pi*J/L
- if (I == 0) or (I == N/2) or (J == 0) or (J == N/2):
- rdm_number= random.gauss(0,1)
- else:
- rdm_number= (random.gauss(0,1) +1.0j*random.gauss(0,1) )/math.sqrt(2.0)
- F[I,J]=2.0*math.pi*L*math.sqrt(l**2*h**2/(4.0*math.pi)*scipy.exp(-Kx**2*l**2/4.0 -Ky**2*l**2/4.0))*rdm_number
- for I in scipy.arange(1,N/2-1,1):
- for J in scipy.arange(1,N/2-1,1):
- F[N-I,N-J]= F[I,J].conjugate()
- for I in scipy.arange(N/2+1,N-1,1):
- for J in scipy.arange(1,N/2-1,1):
- F[N-I,N-J]= F[I,J].conjugate()
- RS = scipy.fftpack.ifft2(F)
- del F
- scipy.io.write_array(
- os.path.join("RS.txt"),
- RS,
- separator=" "
- )
- pylab.clf()
- Z = scipy.real(RS)
- del RS
- pylab.imshow(Z)
- pylab.contour(Z)
- pylab.xlabel('x')
- pylab.ylabel('y')
- pylab.savefig( os.path.join("RS.png"))
- pylab.clf()
- del Z