🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
2 messages
2 total messages Started by królewna Tue, 19 Jan 2010 15:24
Wyładowywanie modułu
#27237
Author: królewna
Date: Tue, 19 Jan 2010 15:24
25 lines
1871 bytes
Witam,

Kolejna z serii zagadek (choć do tej pory jakoś prosto rozwiązywalnych) 
zadanych przeze mnie. Czy jest jakaś możliwość wyładowania (czy 
odładowania bo nie nie wiem na 100% jaka jest prawidłowa forma) modułu. 
Akurat może i w moim programie nie jest to koniecznie potrzebne, bo 
wątpię abym musiała ładować aż tyle modułów aby robiło to różnicę ale 
załóżmy, że mamy program, który obsługuje 100 miliardów użytkowników 
(wliczmy w to populacje wszelkich robaczków aby uzyskać te 100 
miliardów) i sprawdza czy dane funkcje w poszczególnych modułach 
zwracają prawidłowe wartości.

Inaczej mówiąc - nie obchodzą nas półśrodki.

Bo z tego co widzę tutaj:
http://mail.python.org/pipermail/python-list/2003-December/239211.html
to nie wygląda to za pięknie ale od 2003 roku (przez 7 lat) może coś się 
zmieniło w tym zakresie?

Czy pomimo, że python dalej trzyma gdzieś te referencje (wykonałam del 
sys.modules['modul'] oraz del modul) to koniec końców by je wyrzucił? 
Czy może w py3k coś się zmieniło w tej kwestii?

--
królewna
Re: Wyładowywanie modułu
#27238
Author: William Bonawentura
Date: Tue, 19 Jan 2010 16:51
7 lines
1428 bytes
Intuicyjnie można założyć, że innej referencji systemowej niż 
sys.modules['modul'] być nie powinno bo i po co. Systemy automatycznego 
przeładowania kodu w serwerach (mod_python, Django) opierają się właśnie na 
czyszczeniu sys.modules po zmianie daty pliku źródłowego i to działa - 
pamięć nie "puchnie", systemowa implementacja metody __import__  generuje 
nowy obiekt modułu. Oczywiście żaden inny obiekt twojego programu nie może 
posiadać referencji na ten moduł. 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads