Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Program, ktorý z príkazového riadku berie jediný celočíselný argument n a vytvára hĺbku binárneho stromu procesov n?

Tento program si vyžaduje systém schopný rozlúčkového procesu. Nebude spoľahlivo (alebo vôbec) v čisto interpretovanom prostredí, ako je konzola JavaScript webového prehľadávača. Je určený pre systémy podobné UNIX (Linux, MACOS).

Tento program využíva Pythonov `os.fork ()` na tvorbu procesov. Pamätajte, že vytvorenie veľkého počtu procesov môže váš systém premôcť. Test s malými hodnotami `n` najskôr.

`` `Python

import

import

def create_binary_tree (hĺbka, úroveň =0):

"" "

Rekurzívne vytvára binárny strom procesov.

ARG:

Hĺbka:požadovaná hĺbka stromu.

Úroveň:Aktuálna úroveň v strome (začína na 0).

"" "

Ak úroveň Print (f "Process {os.getpid ()} na úrovni {level}") # Vytlačte ID procesu a úroveň

# Vytvorte ľavé dieťa

pid_left =os.fork ()

Ak pid_left ==0:# Child Process

create_binary_tree (hĺbka, úroveň + 1)

os._exit (0) # Dôležité:Proces výstupu, aby sa predišlo nekonečnej rekurzii

# Vytvorte správne dieťa

pid_right =os.fork ()

Ak pid_right ==0:# detský proces

create_binary_tree (hĺbka, úroveň + 1)

os._exit (0) # Dôležité:Proces výstupu, aby sa predišlo nekonečnej rekurzii

# Rodičovský proces čaká na dokončenie detí (voliteľné, ale dobré postupy)

os.waitpid (pid_left, 0)

os.waitpid (pid_right, 0)

Ak __name__ =="__main__":

Ak Len (SYS.Argv)! =2:

Print ("Použitie:Python binary_tree.py ")

SYS.EXIT (1)

skúsiť:

hĺbka =int (sys.argv [1])

Ak hĺbka <0:

Tlač („Hĺbka musí byť nezáporné celé číslo.“)

SYS.EXIT (1)

create_binary_tree (hĺbka)

okrem ValueError:

tlač ("Neplatná hodnota hĺbky. Zadajte celé číslo.")

SYS.EXIT (1)

`` `

Ako spustiť:

1. uložiť: Uložte kód ako `binary_tree.py`.

2. beh z príkazového riadku: `python binary_tree.py ` kde `` je požadovaná hĺbka stromu (napr. `python binary_tree.py 3`).

Dôležité úvahy:

* Manipulácia s chybami: Kód obsahuje základné spracovanie chýb pre neplatné argumenty príkazového riadku.

* Ukončenie procesu: `OS._EXIT (0)` hovory sú rozhodujúce. Bez nich by každý detský proces rekurzívne vytvoril viac procesov, čo by viedlo k nekontrolovanej explózii procesov.

* Použitie zdrojov: Majte na pamäti exponenciálny rast procesov. Hĺbka 4 už vytvorí veľa procesov. Hĺbka 10 pravdepodobne narazí váš systém.

* Správa procesov: `OS.waitpid ()` hovory sú voliteľné, ale odporúčané pre lepšiu správu procesov. Zaisťujú, že rodičovský proces čaká, kým jeho deti skončia pred výstupom. Bez nich by sa váš materský proces mohol ukončiť pred dokončením niektorých detských procesov.

* OBRÁZKY OBRAZY SYSTÉMU: Maximálny počet procesov, ktoré môžete vytvoriť, je obmedzený operačným systémom.

Táto vylepšená verzia poskytuje lepšie spracovanie chýb a riadenie procesov, vďaka čomu je bezpečnejšia a robustnejšia. Pred pokusom o väčšie hodnoty nezabudnite vždy začať s malými hodnotami `n`.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené