Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
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ň
# 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
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`.