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 : Sélectionner tout - Visualiser dans une fenêtre à part
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