New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IDLE: Reduce number and time for user process imports #71721
Comments
This issue continues bpo-25507. I still want to reduce the number of modules imported when run.py starts a user process and the time they require. In the process, I expect to reduce the number of tkinter module imports that need to be reversed and thereby make parts of the bpo-25507 fix unnecessary. "New changeset 93d325c64104 by Terry Jan Reedy in branch 'default': This commit for bpo-25507 was not needed for the fix I eventually choose, but it reduced the size of sys.modules in the user process from 193 to 156. I have since determined that it reduced the time for startup imports on my machine from .45 to .25 seconds. I now regard it as the first patch for this issue. The attached file was explained in msg270522. This and similar refactorings should be done when or after I have otherwise revised the module and tests in question. For a Windows build of repository 3.6, importing tkinter into a fresh python process increases len(sys.modules) from 41 to 65. But run only imports tkinter so it can call _tkinter.tkapp().eval('update') in its interactive input loop. If other indirect imports were eliminated, I suspect _tkinter could be imported instead. |
Terry, I've applied this patch to 3.7 and made a pull request. This seemed like a fix you wanted to move forward with, so I hope that's helpful. |
Yes, I do want to continue this. As I explained in msg270522, I shelved (but not abandoned) the autocomplete patch because it caused a test failure I did not (and do not) understand, and because I found another fix for that issue. The reductions I noted above were for the patch I did apply, not this one. Update: I just created pr_2011 and test_idle passes. I'm puzzled. I don't remember patching autocomplete since last July. Anyway, if the patch works, I can now decide if I really want to go this route. It makes sense to keep related functions together. It also makes sense to keep functions that run in the same process together. I should see if this patch has any noticeable benefit (time and import reduction) and if a similar patch for call tips works and has benefit. |
Yes, I ran test_idle before I submitted the pull request. I wasn't sure if I was missing something based on your comments of the test failing. |
It would be great for this issue to be revisited, there has been some further interest from users. |
I'm going to close the PR for this as the change is out of date with newer changes to fetch_completions and fetch_completions is being rewritten for bpo-37766. It would be easiest to revisit this once the other changes to fetch_completions are set. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: