Programação  
 
Rede de conhecimento computador >> Programação >> C /C + + programação >> Content
Programa que pega um argumento inteiro único n da linha de comando e cria árvore binária de processos profundidade n?
Este programa requer um sistema capaz de marcar processos. Não será executado de maneira confiável (ou de todo) em um ambiente puramente interpretado, como o console JavaScript de um navegador da Web. Ele foi projetado para sistemas semelhantes a Unix (Linux, MacOS).

Este programa usa o `OS.Fork ()` do Python para criação de processos. Lembre -se de que criar um grande número de processos pode sobrecarregar seu sistema. Teste com pequenos valores de `n` primeiro.


`` `Python
OS de importação
Importar sistemas

def create_binary_tree (profundidade, nível =0):
"" "
Cria recursivamente uma árvore binária de processos.

Args:
Profundidade:a profundidade desejada da árvore.
Nível:o nível atual na árvore (começa em 0).
"" "

Se nível print (f "Process {os.getpid ()} no nível {nível}") # Imprima o ID do processo e o nível

# Criar filho esquerdo
pid_left =os.fork ()
Se pid_left ==0:# Processo infantil
create_binary_tree (profundidade, nível + 1)
OS._EXIT (0) # IMPORTANTE:Saia do processo infantil para evitar recursão infinita

# Crie filho certo
pid_right =os.fork ()
Se pid_right ==0:# Processo infantil
create_binary_tree (profundidade, nível + 1)
OS._EXIT (0) # IMPORTANTE:Saia do processo infantil para evitar recursão infinita

# Processo dos pais espera que as crianças terminem (opcional, mas boa prática)

os.waitpid (pid_left, 0)
os.waitpid (pid_right, 0)


Se __name__ =="__main__":
Se Len (sys.argv)! =2:
Print ("Uso:Python binary_tree.py ")
sys.exit (1)

tentar:
profundidade =int (sys.argv [1])
Se profundidade <0:
impressão ("A profundidade deve ser um número inteiro não negativo.")
sys.exit (1)
create_binary_tree (profundidade)
Exceto ValueError:
Imprima ("Valor da profundidade inválida. Digite um número inteiro.")
sys.exit (1)

`` `


Como correr:

1. Salvar: Salve o código como `binário_tree.py`.
2. Corra da linha de comando: `python binary_tree.py ` onde `` é a profundidade desejada da árvore (por exemplo, `python binary_tree.py 3`).

Considerações importantes:

* Manuseio de erro: O código inclui manuseio básico de erro para argumentos de linha de comando inválidos.
* Terminação do processo: As chamadas `OS._Exit (0)` são cruciais. Sem eles, cada processo filho criaria recursivamente mais processos, levando a uma explosão não controlada de processos.
* Uso do recurso: Esteja atento ao crescimento exponencial dos processos. Uma profundidade de 4 já criará muitos processos. Uma profundidade de 10 provavelmente travará seu sistema.
* Gerenciamento de processos: As chamadas `os.waitpid ()` são opcionais, mas recomendadas para melhor gerenciamento de processos. Eles garantem que o processo dos pais aguarde que seus filhos terminem antes de sair. Sem eles, seu processo pai pode terminar antes que alguns processos infantis tenham concluído.
* Limitações do sistema operacional: O número máximo de processos que você pode criar é limitado pelo seu sistema operacional.


Esta versão aprimorada fornece melhor manuseio de erros e gerenciamento de processos, tornando -o mais seguro e mais robusto. Lembre -se de sempre começar com pequenos valores de `n` para testar e entender o comportamento antes de tentar valores maiores.

Anterior :

Próximo :
  Os artigos relacionados
·Como fazer caixas de diálogo MFC 
·Base de SDK xCode Faltando 
·Função de C booleano 
·Como criar Distribuidores e arquivos OBJ em C + + 
·Como compilar códigos C no Makefile 
·Como substituir os elementos de uma matriz em C 
·Como Fazer um Botão visível no Visual C 
·Como pegar todos os eventos do DataGrid 
·Como editar celular DataGrid no Silverlight 
·Como alterar minha senha SYSDBA 
  Artigos em destaque
·Como é chamado quando o seu computador reconhece um ca…
·Como usar uma variável de seqüência de conexão no S…
·Como melhorar o Microsoft Word VBA Tabela Lentidão 
·Limites do Eixo em MATLAB 
·PowerShell Tipos de Objeto 
·Como criar uma conta do servidor Apache MySQL Usando We…
·Uma nova janela é bloqueado em JavaScript 
·Como inserir um item em uma caixa de combinação em Ja…
·Como fazer um loop em Visual Basic 
·Como fazer upload para S3 Com Python 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados