J'ai besoin de convertir une application threading
en une application multiprocessing
pour plusieurs raisons (GIL, fuites de mémoire). Heureusement, les threads sont assez isolés et ne communiquent que via Queue.Queue
s. Cette primitive est également disponible en multiprocessing
donc tout va bien. Maintenant, avant d'entrer dans ce champ de mines, je voudrais obtenir des conseils sur les problèmes à venir:Comment convertir le code de threading Python en code multi-traitement?
- Comment faire en sorte que mes objets peuvent être transférés via le
Queue
? Dois-je fournir quelques__setstate__
? - Puis-je compter sur
put
retournant instantanément (comme avecthreading
Queue
s)? - Conseils généraux/conseils?
- Quelque chose qui vaut la peine de lire en dehors de la Python documentation?
L'initialisation des connexions de base de données dans 'subclass (Process) .__ init__' * est * un problème. : -/ –
Les réponses partielles sont les bienvenues. –
un autre utilisateur a récemment réécrit mon exemple avec la bibliothèque multi-traitement. J'utilisais la file d'attente aussi bien. pourrait valoir le coup d'oeil: http://stackoverflow.com/questions/4072816/ideal-thread-structure-question-involves-multiple-thread-communication – mix