2011-05-16 6 views
3

J'ai 1000s de custom (compilé à '.so') modules que je voudrais utiliser dans python en même temps. Chacun de ces modules est de taille moyenne (100 [KB]).Python - Frais généraux des importations `.so`?

Est-ce que quelqu'un sait quelle est la surcharge (sur le système d'exploitation - en supposant que python ne gère pas cela) de chaque .so importer? ce qui signifie que le surcoût est égal à la taille du fichier .so sur le disque? ou est-ce un fixe, indépendamment de la taille du fichier .so?

Je ne suis pas encore arrivé là, mais je serais curieux de savoir quel est l'impact sur l'OS quand on veut importer, disons 10 000-50 000 modules personnalisés à la fois.

+0

duplication possible de [Python - Limites sur le nombre d'importations?] (Http://stackoverflow.com/questions/6012022/python-limits-on-number-of-imports) – sdolan

+0

@sdolan: ce n'est pas un dupliquer; le premier traite du nombre réel d'importations «.so»; celui-ci traite de la surcharge des modules '.so'. – user3262424

+0

Pourquoi les importez-vous tous en même temps? Pourquoi ne pas les importer avant qu'ils ne soient nécessaires? Est-ce que c'est pour python en général, ou, il semble que vous êtes préoccupé par un système d'exploitation particulier? –

Répondre

3

L'importation de nombreuses bibliothèques partagées prendrait beaucoup de temps - l'éditeur de liens dynamiques passerait beaucoup de temps pendant la phase de chargement. L'éditeur de liens dynamique est vraiment optimisé pour des dizaines à des centaines d'objets partagés, pas des milliers à des dizaines de milliers.

Si possible, combinez vos objets de code partagés. Toutefois, la taille une fois chargée est probablement légèrement inférieure à la taille d'un disque, en fonction des autres informations contenues dans le fichier (symboles de débogage DWARF, sections ELF supplémentaires non requises, etc.).

+0

merci. il est donc préférable d'avoir un énorme fichier '.so' qui unit plusieurs milliers de modules' .so' ensemble? La surcharge sera-t-elle la même si l'on importe 10000 '.so' ou si l'on importe un' .so 'énorme qui est composé de ces 10000 '.so' fichiers individuels? – user3262424

+0

@user: Il y a un surcoût supplémentaire d'avoir plus de fichiers .so (plus d'enregistrements pour ce qui est chargé et la mémoire similaire). Il y a aussi plus de temps (l'éditeur de liens démarre 1000 fois de fois contre une fois), pour la plupart des symboles en double (appels Python, appels OS, etc.). –

+0

merci. Cela aide-t-il si on importe seulement une partie des fonctionnalités d'un module au lieu de tout? par exemple, au lieu de 'importer Y', je ferai' à partir de Y importer X1, X2, X3 .... '; Cela aidera-t-il à quelque chose/sera-t-il plus économique en termes de ressources? – user3262424

Questions connexes