“Conocimiento Programación>C /C + + Programming

Programa que toma un solo argumento entero n desde la línea de comandos y crea la profundidad del árbol binario de los procesos n?

2011/10/28
Este programa requiere un sistema capaz de bifurcar procesos. No se ejecutará de manera confiable (o en absoluto) en un entorno puramente interpretado como la consola JavaScript de un navegador web. Está diseñado para sistemas similares a Unix (Linux, MacOS).

Este programa utiliza el `OS.fork ()` de Python para la creación de procesos. Recuerde que crear una gran cantidad de procesos puede abrumar su sistema. Pruebe con pequeños valores de `n` primero.

`` `Python

importar sistema operativo

Sys de importación

Def create_binary_tree (profundidad, nivel =0):

"" "

Recursivamente crea un árbol binario de procesos.

Args:

Profundidad:la profundidad deseada del árbol.

Nivel:El nivel actual en el árbol (comienza en 0).

"" "

Si nivel print (f "proceso {os.getpid ()} en el nivel {nivel}") # Imprima el ID y el nivel del proceso

# Crea un niño izquierdo

pid_left =os.fork ()

Si pid_left ==0:# proceso infantil

create_binary_tree (profundidad, nivel + 1)

OS._EXIT (0) # IMPORTANTE:Salga del proceso infantil para evitar la recursión infinita

# Crea un niño correcto

pid_right =os.fork ()

Si pid_right ==0:# proceso infantil

create_binary_tree (profundidad, nivel + 1)

OS._EXIT (0) # IMPORTANTE:Salga del proceso infantil para evitar la recursión infinita

# El proceso de los padres espera a que los niños terminen (opcionales, pero buenas prácticas)

OS.WaitPid (PID_LEFT, 0)

OS.WaitPid (PID_RIGHT, 0)

Si __name__ =="__main__":

Si len (sys.argv)! =2:

Imprimir ("Uso:Python Binary_tree.py ")

sys.exit (1)

intentar:

profundidad =int (sys.argv [1])

Si la profundidad <0:

imprimir ("La profundidad debe ser un entero no negativo").

sys.exit (1)

create_binary_tree (profundidad)

Excepto ValueError:

Imprimir ("Valor de profundidad no válido. Ingrese un entero")

sys.exit (1)

`` `` ``

Cómo ejecutar:

1. Guardar: Guarde el código como `binary_tree.py`.

2. Ejecutar desde la línea de comando: `python binary_tree.py ` donde `` es la profundidad deseada del árbol (por ejemplo, `python binary_tree.py 3`).

Consideraciones importantes:

* Manejo de errores: El código incluye el manejo básico de errores para argumentos de línea de comandos no válidos.

* Terminación del proceso: Las llamadas `OS._EXIT (0)` son cruciales. Sin ellos, cada proceso infantil crearía recursivamente más procesos, lo que lleva a una explosión no controlada de procesos.

* Uso de recursos: Tenga en cuenta el crecimiento exponencial de los procesos. Una profundidad de 4 ya creará muchos procesos. Una profundidad de 10 probablemente bloqueará su sistema.

* Gestión de procesos: Las llamadas `OS.WaitPid ()` son opcionales pero se recomiendan para una mejor gestión de procesos. Aseguran que el proceso de los padres espere a que sus hijos terminen antes de salir. Sin ellos, el proceso de su padre puede terminar antes de que algunos procesos infantiles se hayan completado.

* Limitaciones del sistema operativo: El número máximo de procesos que puede crear está limitado por su sistema operativo.

Esta versión mejorada proporciona un mejor manejo de errores y administración de procesos, lo que lo hace más seguro y más robusto. Recuerde comenzar siempre con valores pequeños de `n` para probar y comprender el comportamiento antes de intentar valores más grandes.

C /C + + Programming
Cómo cambiar el cursor en C + +
Cómo criar a un entero a una potencia en C
Cómo cambiar el nombre del botón Disminución en el iPhone
Cómo crear Hello World en Microsoft Visual C 2010 Express
Definición de la abstracción de datos en C + +
Cómo poner Cuerdas Estilo C en una matriz en C + +
Cómo escribir una historia del juego en C + +
¿Cuál es la forma completa de CG?
Conocimiento de la computadora © http://www.ordenador.online