• Aide
  • Eurêkoi Eurêkoi

Livre

Python avancé et programmation scientifique : techniques d'algorithmisation et de construction de programmes compacts et efficaces

Résumé

Des techniques de programmation avancées dans le contexte numérique ainsi que dans les domaines de visualisation et de traitement d'images, avec différents sujets à faire en autonomie au fil d'une trentaine d'exercices. Les codes sont accessibles en ligne et de nombreux sites internet sont répertoriés à la fin de chaque chapitre. ©Electre 2019


  • Éditeur(s)
  • Date
    • DL 2019
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (VIII-392 p.) : ill. ; 24 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-340-03294-1
  • Indice
  • Quatrième de couverture
    • Python avancé et programmation scientifique

      Techniques d'algorithmisation et de construction de programmes compacts et efficaces

      Ce livre traite de plusieurs techniques avancées de programmation en Python, dont certaines sont moins connues malgré leur utilité. Il est destiné aux futurs (ou actuels) développeurs de programmes de qualité professionnelle, aux scientifiques ayant besoin d'outils de programmation efficaces et ergonomiques et aux enseignants de programmation avancée et à leurs étudiants.

      Sont traités les modules de support indispensables à tout scientifique programmant en Python, notamment le traitement de données tabulaires avec Numpy et les techniques d'accélération des programmes, grâce à la recompilation des programmes avec Numba et Cython et à l'usage des processeurs graphiques (GPU) à l'aide des frameworks PyCuda et Numba. Le texte couvre de manière concrète plusieurs éléments plus « profonds » de la couche standard du langage, comme la structure interne des objets et des fonctions, les itérateurs (avec coroutines), descripteurs, métaclasses, la concurrence avec les threads et les processus, etc.

      Une trentaine d'exercices assez longs sont proposés ainsi que plusieurs dizaines d'exemples complets et testés. Les codes de programmes sont disponibles en ligne sur le site de l'auteur. Les exemples et les exercices sont basés sur l'expérience pédagogique de l'auteur et couvrent les sujets de mathématiques appliquées et de simulation, de traitement de textes et d'images (y compris des projections cartographiques).

      Une bibliographie abondante permettra de trouver rapidement les algorithmes, des détails mathématiques, les logiciels mentionnés (surtout les paquetages installables libres), etc.


  • Tables des matières
      • Python avancé et programmation scientifique

      • Techniques d'algorithmisation et de construction de programmes compacts et efficaces

      • Jerzy Karczmarczuk

      • Ellipses

      • 1 Introduction1
      • 1.1 Pourquoi Python1
      • 1.2 À qui s'adresse ce livre3
      • 1.3 Un peu de méthodologie5
      • 2 Objets dans Python. Structures et fonctionnalités9
      • 2.1 Propriétés essentielles. Exemples9
      • 2.1.1 Variables et dictionnaires11
      • 2.1.2 Classe comme environnement13
      • 2.2 Surcharge des opérateurs13
      • 2.2.1 Arithmétique et héritage13
      • 2.2.2 Héritage des classes numériques. Surcharge de _new_16
      • 2.2.3 Surcharge de l'indexation18
      • 2.2.4 Opérateurs formés par le programmeur ?19
      • 2.2.5 Un exemple plus long : différentiation automatique21
      • 2.3 Digression : héritage multiple24
      • 2.3.1 L'ordre de résolution des méthodes (MRO)25
      • 2.4 Fonctions et objets28
      • 2.4.1 Fonctions et persistance28
      • 2.4.2 Fermetures30
      • 2.4.3 Modification d'un programme pendant son exécution31
      • 2.4.4 Décorations des fonctions32
      • 2.4.5 Mémoïsation33
      • 2.4.6 Exemple. Distance de Levenshtein-Damerau entre deux textes34
      • 2.4.7 Outils de mémoïsation existants36
      • 2.5 Exceptions comme objets38
      • 2.5.1 Traitement et héritage des Exceptions39
      • 2.5.2 Rapport post mortem (traceback)41
      • 2.5.3 Exceptions comme structures de contrôle42
      • 2.6 Instruction with et Context Managers45
      • 2.7 Slots47
      • 2.8 Exercices49
      • 3 Conteneurs, séquences et itérateurs57
      • 3.1 Structures standard, codage pas toujours57
      • 3.1.1 Itérateurs implicits. Structures « virtuelles » prédéfinies59
      • 3.1.2 Exemple. Séries de Taylor61
      • 3.2 Librairie Collections65
      • 3.2.1 Compteurs65
      • 3.2.2 Tuples nommés66
      • 3.2.3 Deques68
      • 3.3 Itérateurs, leurs combinaison et contrôle72
      • 3.3.1 Suite logistique ; un exemple animé73
      • 3.3.2 Exemples de générateurs77
      • 3.3.3 Itertools79
      • 3.3.4 Générateurs - managers et autres utilités ; librairie Contextlib82
      • 3.3.5 Pièges d'évaluation paresseuse83
      • 3.4 Générateurs et non-déterminisme logique84
      • 3.4.1 Backtracking85
      • 3.4.2 Itérateurs et génération combinatoire86
      • 3.5 Générateurs étendus : coroutines90
      • 3.5.1 L'expression yield et la méthode send93
      • 3.5.2 Générateurs-coroutines et un simple modèle de concurrence95
      • 3.6 Itérations, coroutines et non-déterminisme97
      • 3.6.1 Coroutines et programmation par flots de données99
      • 3.6.2 Blocs élémentaires et composites ; exemples de circuits106
      • 3.6.3 Exemple évolué. Un oscillateur atténué décomposé111
      • 3.7 Exercices113
      • 4 Librairie NumPy. Usage avancé des tableaux123
      • 4.1 Tableaux comme objets mathématiques123
      • 4.1.1 Solution de l'équation de Laplace125
      • 4.2 Création des tableaux128
      • 4.2.1 Sous-classes de ndarray132
      • 4.2.2 Sous-classes standard134
      • 4.3 Fonctions universelles136
      • 4.3.1 Vectorisation138
      • 4.3.2 Sélection conditionnelle139
      • 4.4 Indexation avancée141
      • 4.4.1 Indices booléens composites142
      • 4.4.2 Indices entiers composites142
      • 4.4.3 Indices tabulaires et géométrie143
      • 4.4.4 Exemple. Arbre de Feigenbaum, et fonctions de histogrammation146
      • 4.5 Traitement d'images et visualisation avec Python148
      • 4.5.1 Génération des motifs géométriques. Couleurs149
      • 4.5.2 Filtrage des contours et équilibrage de l'histogramme154
      • 4.5.3 Distorsion des images157
      • 4.5.4 Visualisation des champs vectoriels, technique LIC161
      • 4.5.5 Projections cartographiques164
      • 4.6 Simulation en physique statistique : modèle d'Ising 2D170
      • 4.6.1 Implémentation172
      • 4.7 Exercices174
      • 5 Quelques objets « sous le capot »183
      • 5.1 Ajout dynamique des méthodes183
      • 5.2 Gestion avancée des attributs187
      • 5.2.1 Décodage des méthodes spéciales190
      • 5.2.2 Properties192
      • 5.2.3 Exemple de properties : températures194
      • 5.2.4 Properties spécifiées par décorateurs195
      • 5.3 Descripteurs197
      • 5.3.1 Propriétés essentielles des descripteurs197
      • 5.3.2 Implémentation des méthodes comme descripteurs200
      • 5.3.3 Implémentation de properties et d'autres descripteurs de données202
      • 5.3.4 La construction super(...) et les descripteurs203
      • 5.3.5 Héritage multiple et super(...)204
      • 5.3.6 Une catégorie-exemple de descripteurs : les proxies206
      • 5.4 Décorateurs avancés208
      • 5.4.1 Paramétrisation des décorateurs208
      • 5.4.2 Classes décoratrices, et classes décorées209
      • 5.5 Métaclasses211
      • 5.5.1 A-t-on besoin de ce concept ?212
      • 5.5.2 Usage des métaclasses213
      • 5.5.3 Création dynamique des classes215
      • 5.5.4 La « préparation » de la classe216
      • 5.6 Exercices217
      • 6 Programmes concurrents et asynchrones221
      • 6.1 Parallélisme et concurrence221
      • 6.1.1 Digression méthodologique : « lois » de Amdahl et de Gustafson226
      • 6.1.2 Threads et processus : quelle différence ?228
      • 6.2 Multi-traitement et processus229
      • 6.2.1 Module multiprocessing et son usage de base229
      • 6.2.2 Partitionnement des données233
      • 6.2.3 Échange des données et communication235
      • 6.2.4 Partage des données et verrous238
      • 6.2.5 Autre exemple de communication : tri parallèle239
      • 6.2.6 MPI243
      • 6.3 Threads246
      • 6.3.1 Exemple, une variante du tri250
      • 6.3.2 Timers et événements252
      • 6.4 Asyncio259
      • 6.4.1 Boucle événementielle261
      • 6.4.2 Constructions async et await, et les coroutines265
      • 6.4.3 Interaction et communication270
      • 6.4.4 Flux 271
      • 6.5 Exercices274
      • 7 Accélération des programmes281
      • 7.1 Quelques avertissements281
      • 7.2 Numba283
      • 7.2.1 Configuration et paramétrage de Numba285
      • 7.2.2 Compilation anticipée286
      • 7.2.3 Optimisation des classes287
      • 7.2.4 Vectorisation et fonctions universelles288
      • 7.3 Cython290
      • 7.3.1 Directive cdef et types C dans un programme Python292
      • 7.3.2 Paramétrage avancé de Cython294
      • 7.4 PyPy et autres outils295
      • 7.5 GPU et Python298
      • 7.5.1 Logiciel de support299
      • 7.5.2 CUDA, la première leçon300
      • 7.5.3 Interface PyCuda304
      • 7.5.4 Encore quelques outils d'interfaçage308
      • 7.6 Parallélisme et Numba311
      • 7.6.1 Quelques éléments d'interfaçage CUDA311
      • 7.7 Exercices314
      • 8 Structures de données sérialisées321
      • 8.1 Pickle321
      • 8.1.1 La « machine » Pickle324
      • 8.1.2 Pickle : outils de support326
      • 8.1.3 Shelve327
      • 8.1.4 Dill327
      • 8.2 JSON329
      • 8.3 Autres outils330
      • 8.4 Exercices331
      • A Solutions des exercices choisis335
      • Liste des exercices386
      • Index387

  • Origine de la notice:
    • Electre
  • Disponible - 681.234 KAR

    Niveau 3 - Informatique