Message posté par : Laurence Lauvier
----------------------------------------
Bonjour à tous,
Je souhaiterais réaliser des traitements en parallèle sur les différents processeurs de
mon pc grâce à à un script python afin de diminuer les temps de traitement. J'utilise
pour se faire: futures.ProcessPoolExecutor avec un paramètre pour le nombre de
processus=7. La base de départ est de taille importante (plusieurs millions de lignes qui
nécessiteraient selon les critères de sélection 10 processus) aussi je commence par une
sélection avec MakeFeatureLayer(base, nouvelle_base,selection). J'exporte ensuite
cette sélection dans une géodatabase que je crée pour chaque processus dans un dossier lui
aussi créé automatiquement comme suit:
job_id = uuid.uuid4().hex
job_folder = os.path.join(main_folder, job_id)
pid = os.getpid()
os.mkdir(job_folder)
#global job_result
#job_result={"jobId":job_id,"jobFolder":job_folder,"solveSucceeded":False,"solveMessages":"","outputLines":"","outputLayerFile":""}
job_result={"jobId":job_id,"jobFolder":job_folder,"solveSucceeded":False,"outputLines":""}
result = DM.CreateFileGDB(job_folder, "scratch")
Le dossier se crée correctement, la géodatabase aussi. Ma sélection est effectuée
correctement et l'enregistrement de la base dans la gdb se fait correctement également
pour les 7 premiers processus (le nombre de processus disponibles sur mon pc). Le problème
survient pour les 3 traitements suivants: le dossier est bien créé, la gdb aussi. Lors de
l'export de ma base, j'ai le code d'erreur suivant 000725 à savoir que la base
existe déjà. J'ai modifié mes chemins pour que cela apparaisse plus clairement pour
être sûre qu'il n'y ait pas de confusion (entre la gdb que je crée et celle qui
contient la base d'origine) mais l'erreur persiste et je ne comprends pas
pourquoi.
L'un d'entre vous pourrait-il me venir en aide svp, je ne suis pas experte en
python, je découvre seulement le parallel geoprocessing et je suis totalement dans
l'impasse.
D'avance merci,
Bonne journée
Laurence
Show replies by date