IOError: [Errno 24] Too many open files
Bonjour,
Mon système de logging conserve ses fichiers ouverts pour ne pas avoir à les réouvrir à chaque write(). J'obtiens de temps en temps l'IOError: [Errno 24] Too many open files, le plus souvent lorsque le profiler appelle dump_stats()
- Comment puis-je changer sous windows le nombre limite de fichiers ouverts par processus ?
- Le patch suivant vise à dénombrer les fichiers encore ouverts à un moment donné. Il m'indique 59 fichiers ouverts au moment ou je catche l'IOerreur. Est-ce vraiment la limite de mon Windows ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
import __builtin__
class DO_PATCH():
memory= {}
BUITINOPEN= open
def __init__(self):
""" Activates patch of __builtin__.open """
def _open(file,*a):
o= DO_PATCH.BUITINOPEN(file,*a)
DO_PATCH.memory[file]= o
return o
__builtin__.open= _open
@staticmethod
def show_use(opened=None):
""" Show current state of all file that had been opened since patch """
d= dict([(k,v.closed) for (k,v) in DO_PATCH.memory.items()])
def _print(*a):
print a
print d
if opened== None or opened==False:
f= [k for (k,closed) in d.items() if closed]
print "CLOSED ", len(f), f
[_print(k) for k in sorted(f)]
if opened== None or opened==True:
f= [k for (k,closed) in d.items() if not closed]
print "OPENED", len(f), f
[_print(k) for k in sorted(f)]
return d |