ahoj. mam takovy problem a nejasnost ohledne "exec". docetl jsem se, ze kdyz spustim napriklad:
p="print 3"
exec(p)
exec otevre vlastni interpreter a v nem provede "print 3". jenze, ja exec podezrivam z toho, ze tento otevreny interpreter uz v nejakych pripadech nezavre. napsal jsem program, ve kterem se v prakticky nekonecnem cyklu spousteji nove a nove prikazy prave pomoci exec a pri tomto deni se neunosne zvecuje strankovaci soubor, az do chvile nez pretece a program se ukonci chybou neco jako "errormemory". je mozne ze toto neni stoprocentne podmineno exec, ale necim jinym jenze ja uz nevim cim. takze se chci zeptat na par konkretnich otezek jakozto naprosty zacatecnik.
a) je mozne ze exec nezavira sve spustene interpretery v nejakych pripadech? - pokud ano jak ho k tomu donutit?
b) je mozne ze exec zavira sve interpretery, ale nejakym zpusobem si v pameti uchovava jejich promenne? - pokud ano jak je mam hromadne smazat tak, aniz bych vymazani promennych musel uvadet na konec retezce ktery nasledne exec spusti? za timto ucelem jsem zkousel globals(), locals() ve vsech kombinacich a nepomohlo to.
c) jak v pythonu zjistim aktualni velikost strankovaciho souboru? - pokud bych umel toto mohl bych nastavit nejakou kritickou hranici velikosti strankovaciho souboru, po jejimz prekroceni/dosazeni by se něco stalo (napr. by se program restartoval)
win XP (stacila by i syntaxe pro prikazovy radek(cmd) jenze to myslim ze nejde. jedine co jsem nasel byl prikaz "systeminfo", jenze ten neuvadi konkretne velikost strankovaciho souboru)
d) jak v pythonu predejit preteceni strankovaciho souboru? pripadne jak nejakou metodou vycistit pamet aby nedoslo k jejimu zaplneni? (cokoliv v tomto duchu :o))
e) cokoliv co si myslite ze by me pomohlo.
za veskere konstruktivni prispevky predem dekuji. hezky den.
Fórum › Python
Nejasnosti okolo exec
zjistis velice rychle odpoved, kdyz se kouknes na vypis procesu... a pokud si zapnes i zobrazeni obsazene pameti tak jeste rychleji
na vse by mel stacit program taskmgr .. staci napsat v prikazovce
u nej se da prohlizet procesy... a kdyz klepnes pravym na ty liste s popiskama tak se da pridat jeste hromada dalsich sloupcu
dekuji, ale to je mi naprosto k nicemu. to ze se zaplnuje strankovaci soubor jsem samozrejme zjistil z taskmanageru, ale ja nepotrebuju abych to vedel ja, ale aby to vedel ten program. "c) jak v pythonu zjistim aktualni velikost strankovaciho souboru?" presneji - to cislo co je v taskmanageru u strankovaciho souboru by bylo fajn mit v promenne, ale je to krajni varianta. radeji bych znal odpovedi na "a" a "b".
Quiark: To jo no eval jsen neznal ale ten už zase neumí třeba tohle :
a="""
c="ahoj"
w=c+" "
e=w*5
print c
print w
print e
"""
Jinak kód co bych se házel má asi 1000 řádků a to se mi fakt nechce. Spíš mě zajímá jak exec funguje a jak mám odstranit problémy co jsem zde popsal.
Aha, promiň, spletl jsem si eval a exec. Nicméně stejný kód mi funguje i s execem bez žraní paměti. To znamená, že asi se cosi neuvolňuje ve spouštěném kódu, nebo máš zabugovanou verzi pythonu. Takže bych zkusil ten execovaný kód postpně ořezávat, až přijdeš do bodu, kdy to přestane žrát tu paměť.
Quiark: Ty jo dělám tady s tim všecko možný už a pořád to hltí paměť bezezměny. Nevim... možná že to exec nebude, ale pak nevim co... neznáš nějakej způsob jak si v pythonu udělám kopletní výpis všech proměnných i s obsahem? Pak bych zjistil co přesně se mi to tam vlastně plní.
Kromě locals(), globals() a spol. nic neznám. Možná něco bude existovat, to bys musel pohledat v dokumentaci. Každopádně vyzkoušej ten můj jednoduchej program, abys ověřil, že tvůj python je v pohodě. A pak metodu rozděl a panuj - oddělej půlku svýho programu a vyzkoušej, jestli to dál žere paměť. Pokud jo, tak oddělej další čtvrtku a tak dál. A taky můžeš zkusit před koncem toho kódu na každou proměnnou del.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pár nejasností — založil Hnykda
Nejasnosti v Delphi — založil stif
Border okolo anchoru ve ff a ie — založil kaj1n3k
Jednoducha otazocka okolo retazcov — založil bandidado
Moderátoři diskuze