1 votos

¿Cómo funciona "is_child_algorithm=True" en processing.run en el script QGIS de Python?

No entiendo cómo funciona "is_child_algorithm" en processing.run.

Premisa: He creado un script en python. Este script utiliza un bucle, iterando miles de veces sobre un campo de una capa. Me he dado cuenta de que la ocupación de la ram crece con el tiempo y el tiempo de procesamiento en el paso único también crece. Utilizo diferentes funciones "clásicas" en el código ex:

outputs['fieldcalculator_on_layer_map1'] = processing.run ('native: fieldcalculator', alg_params, context = context, is_child_algorithm = True)
outputs ['delete_duplicate_on_layer_map1'] = processing.run ('native: deleteduplicategeometries', alg_params, context = context, is_child_algorithm = True)

Me he dado cuenta de que poniendo is_child_algorithm = False no tengo el problema de la ram y el tiempo (se mantiene constante en cada paso), pero después de varias iteraciones (200) el programa se bloquea, mientras que usando is_child_algorithm = True no se bloquea, claro.

¿Qué hace "is_child_algorithm = True / False"?

1voto

lornix Puntos 5423

Según Código fuente de QGIS el is_child_algorithm se utiliza para indicar "si este algoritmo se ejecuta como parte de un algoritmo mayor" (por ejemplo, si un algoritmo determinado forma parte de un algoritmo que llama a otros Processing algoritmos).

Internamente, esto parece afectar sobre todo a la forma en que la propiedad de las capas creadas por el algoritmo se transfiere (o no) a la persona que llama.

En tu caso parece que dejar este valor en False es la solución adecuada.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X