J'utilise multiprocessing.Pool.map
, qui bifurque le processus en cours. Je comprends que, par défaut, tous les descripteurs de fichier , y compris les sockets, sont copiés à partir du processus maître lors de la mise en forme. Le processus maître lui-même est un serveur web (utilisant cherrypy), donc cela fait des ravages avec les ports ouverts, etc. Les processus forkés ne font vraiment que CPU-heavy numerical stuff dans l'une des bibliothèques que le serveur utilise - rien à voir avec le web/partie de douille.fork: ferme toutes les sockets ouvertes
Existe-t-il un moyen facile de fermer automatiquement toutes les sockets dans les nouveaux processus? Ou une autre façon d'éviter les problèmes de forking un serveur CherryPy?
En utilisant CherryPy 3.2.2, Python 2.7; doit fonctionner sous Linux et OS X.
La manière paresseuse est de créer le pool de processus avant d'ouvrir des prises. –
Malheureusement, j'ai besoin d'un instantané "courant" de toute la mémoire, à l'heure d'invocation de 'pool.map()' ... juste pas les sockets :) – user124114