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
Author: królewna
Date: Tue, 19 Jan 2010 15:24
Date: Tue, 19 Jan 2010 15:24
25 lines
1871 bytes
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
Author: William Bonawentura
Date: Tue, 19 Jan 2010 16:51
Date: Tue, 19 Jan 2010 16:51
7 lines
1428 bytes
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