SynchronisationSynchronisation

Lorsqu’un programme Multithreadmultithread utilise Owlready pour créer ou modifier des ontologies, plusieurs threads peuvent vouloir écrire dans le quadstore au même moment, ce qui peut causer une corruption de la base de données. Notez que, même si chaque thread écrit sur une ontologie différente, le problème reste le même, car les ontologies partagent en réalité le même quadstore. Dans le cas d’un programme multithread, il est donc nécessaire de synchroniser les écritures (à l’inverse, les lectures n’ont pas besoin de l’être).

En particulier, les serveurs web générés avec Flask sont généralement multithread (par défaut, Flask utilise le serveur Werkzeug qui lance le serveur dans ce mode). Lors du chapitre précédent, nous n’avions pas eu de problème de synchronisation, car le serveur ne faisait que lire l’ontologie, mais ne la modifiait pas.

Owlready gère la synchronisation, de la manière suivante : Owlready verrouille automatiquement la base de données en écriture à l’entrée d’un bloc « with ontologie:... » et la déverrouille à la sortie du bloc. De même, les fonctions et méthodes suivantes sont également synchronisées : get_ontology(), ontology.load(), ontology.destroy() et sync_reasoner() (que nous verrons...

Pour consulter la suite, découvrez le livre suivant :
couv_EPPYTONT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Importer des ontologies
Suivant
Exemple: peupler une ontologie à partir d’un fichier CSV