Cannot allocate memory when using os.spawn for moving files

Andreas lists at hilboll.de
Tue Mar 17 11:37:51 EDT 2009


Hello there,

I have a problem moving files from my local harddrive to a NFS share 
using a Python script.
The script is used to run a model which produces large (~500MB) binary 
output files. The model itself is a Fortran program, and I call it from 
my script using the line

os.spawnlp(os.P_WAIT, 'time', 'time', OPT.binary)

where OPT.binary is the filename to be run. This works flawlessly.

However, in order not to clutter up my harddrive, I want to move the 
generated files to a network location after each model run. To save 
time, I use os.P_NOWAIT here:

os.spawnlp(os.P_NOWAIT, 'mv', 'mv', LOCALFILENAME, REMOTEFILENAME)

where LOCALFILENAME is some string like '/home/andreas/model.bin' and 
REMOTEFILENAME is some string like '/home/nfs/model-output/'.

Here I have the problem that after about every 10th model run, I get an 
error saying

Traceback (most recent call last):
   File "../../../../pyiup/b3dctm/run_b3dctm.py", line 281, in <module>
     main()
   File "../../../../pyiup/b3dctm/run_b3dctm.py", line 71, in main
     copy_model_output()
   File "../../../../pyiup/b3dctm/run_b3dctm.py", line 162, in 
copy_model_output
     os.spawnlp(os.P_NOWAIT, 'mv', 'mv', get_base_filename(RUNDATE) + 
'.pdg', 
os.path.join(OPT.datastoragepath,OPT.modelname,OPT.runname,RUNDATE.strftime('%Y/
%m')))
   File "/usr/lib64/python2.5/os.py", line 635, in spawnlp
     return spawnvp(mode, file, args)
   File "/usr/lib64/python2.5/os.py", line 584, in spawnvp
     return _spawnvef(mode, file, args, None, execvp)
   File "/usr/lib64/python2.5/os.py", line 530, in _spawnvef
     pid = fork()
OSError: [Errno 12] Cannot allocate memory

And my Python script dies.

Is there anyone who can help me with this problem? I'm on Ubuntu 8.04 
64bit with Python 2.5. I am willing to accept that the moving of the 
files does not always work, but then it would be really helpful if I 
could somehow prevent my script from dying and just try the moving again.

Any help is greatly appreciated!

Cheers,

Andreas



More information about the Python-list mailing list