Ralf Schmitt wrote: > Nick Coghlan wrote: >> >> It looks like the problem is the call to getabspath() in getmodule(). >> This happens every time, even if the file name is already in the >> modulesbyfile cache. This calls os.path.abspath() and >> os.path.normpath() every time that inspect.findsource() is called. >> >> That can be fixed by having findsource() pass the filename argument to >> getmodule(), and adding a check of the modulesbyfile cache *before* >> the call to getabspath(). >> >> Can you try this patch and see if you get 2.4 level performance back >> on Fernando's test?: > > no. this doesn't work. getmodule always iterates over > sys.modules.values() and only returns None afterwards. > One would have to cache the bad file value, or only inspect new/changed > modules from sys.modules.
Good point. I modified the patch so it does the latter (it only calls getabspath() again for a module if the value of module.__file__ changes). Cheers, Nick. -- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com