J'essaie de résoudre un gros problème numérique qui implique de nombreux sous-problèmes, et j'utilise le module de multitraitement de Python (spécifiquement Pool.map) pour répartir les différents sous-problèmes indépendants sur différents cœurs. Chaque sous-problème implique le calcul de nombreux sous-sous-problèmes, et j'essaie de mémoriser efficacement ces résultats en les stockant dans un fichier s'ils n'ont pas encore été calculés par un processus, sinon je saute le calcul et je lis simplement les résultats du fichier.
J'ai des problèmes de concurrence avec les fichiers : différents processus vérifient parfois si un sous-sous-problème a déjà été calculé (en cherchant le fichier où les résultats seraient stockés), voient que ce n'est pas le cas, exécutent le calcul, puis essaient d'écrire les résultats dans le même fichier en même temps. Comment éviter les collisions d'écriture de ce genre ?