|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Program som tar ett enda heltalargument n från kommandoraden och skapar binärt träd av processdjup n?

    Detta program kräver ett system som kan gaffla processer. Det kommer inte att köras pålitligt (eller alls) i en rent tolkad miljö som en webbläsares JavaScript -konsol. Den är designad för UNIX-liknande system (Linux, MacOS).

    Detta program använder Pythons `OS.Fork ()` för processskapande. Kom ihåg att skapa ett stort antal processer kan överväldiga ditt system. Testa med små värden på `n` först.

    `` `python

    importsystem

    importsys

    def create_binary_tree (djup, nivå =0):

    "" "

    Rekursivt skapar ett binärt träd av processer.

    Args:

    Djup:det önskade djupet på trädet.

    Nivå:Den aktuella nivån i trädet (börjar klockan 0).

    "" "

    Om nivå utskrift (f "process {os.getpid ()} på nivå {nivå}") # skriva ut process -id och nivå

    # Skapa vänsterbarn

    pid_left =os.fork ()

    Om pid_left ==0:# barnprocess

    create_binary_tree (djup, nivå + 1)

    OS._EXIT (0) # VIKTIGT:Avsluta barnprocess för att undvika oändlig rekursion

    # Skapa rätt barn

    pid_right =os.fork ()

    Om PID_RIGHT ==0:# Barnprocess

    create_binary_tree (djup, nivå + 1)

    OS._EXIT (0) # VIKTIGT:Avsluta barnprocess för att undvika oändlig rekursion

    # Förälderprocess väntar på att barn ska avsluta (valfritt, men bra praxis)

    OS.WAITPID (PID_LEFT, 0)

    OS.WAITPID (PID_RIGHT, 0)

    om __name__ =="__main__":

    Om len (sys.argv)! =2:

    tryck ("Användning:python binary_tree.py ")

    sys.exit (1)

    försök:

    Djup =int (sys.argv [1])

    Om djupet <0:

    tryck ("Djup måste vara ett icke-negativt heltal.")

    sys.exit (1)

    create_binary_tree (djup)

    utom värdeError:

    Skriv ut ("Ogiltigt djupvärde. Ange ett heltal.")

    sys.exit (1)

    `` `

    Hur man kör:

    1. spara: Spara koden som `binary_tree.py`.

    2. Kör från kommandoraden: `python binary_tree.py ` där `` är det önskade djupet i trädet (t.ex. `python binary_tree.py 3`).

    Viktiga överväganden:

    * Felhantering: Koden innehåller grundläggande felhantering för ogiltiga kommandoradsargument.

    * Processavbrott: "Os._exit (0)` samtal är avgörande. Utan dem skulle varje barnprocess rekursivt skapa fler processer, vilket leder till en okontrollerad explosion av processer.

    * resursanvändning: Tänk på den exponentiella tillväxten av processer. Ett djup på 4 kommer redan att skapa många processer. Ett djup på 10 kommer sannolikt att krascha ditt system.

    * Processhantering: "Os.WaitPid ()` samtal är valfria men rekommenderas för bättre processhantering. De säkerställer att förälderprocessen väntar på att dess barn ska avslutas innan de går ut. Utan dem kan din förälderprocess avslutas innan vissa barnprocesser har slutförts.

    * Operativsystembegränsningar: Det maximala antalet processer du kan skapa begränsas av ditt operativsystem.

    Denna förbättrade version ger bättre felhantering och processhantering, vilket gör den säkrare och mer robust. Kom ihåg att alltid börja med små värden på "n" för att testa och förstå beteendet innan du försöker större värden.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man gör Dynamic Storage Tilldelning C
    ·Hur man skriver en kod i C + + Använda Lucas Series
    ·Hur man använder C + + för att skriva en kod för att…
    ·Mål för CString Metoder
    ·Vart instruktionsutförandet händer?
    ·Så här importerar XLS för NET
    ·Vad är dynamisk felsökning i mikroprocessor?
    ·Hur man gör ett objekt Bounce i C #
    ·Vad betyder gradvis förfining i samband med SDLC?
    ·Hur konvertera och avkoda HTML till en sträng på iPho…
    Utvalda artiklarna
    ·Vad är en Cal paket i Visual Basic
    ·Inaktivera ActiveMARK Regedit
    ·Hur man gör ett Visual Basic Game
    ·Hur man gör en ny anslutning i NetBeans
    ·Hur man skapar Spatial indexering
    ·Vad är VBA-programmering
    ·Hur man skapar Flash Cards i Python
    ·GNU & C + + för datorer
    ·Fördelar med flera Arv
    ·Aktivera Memory Leak Detection
    Copyright © Dator Kunskap https://www.dator.xyz