You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
IDLE: Reduce number and time for user process imports #71721
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:
assignee='https://github.com/terryjreedy'closed_at=Nonecreated_at=<Date2016-07-16.23:19:16.232>labels= ['expert-IDLE', 'type-feature', '3.7']
title='IDLE: Reduce number and time for user process imports'updated_at=<Date2020-07-12.09:17:16.221>user='https://github.com/terryjreedy'
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.
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.
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.
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.
Activity
terryjreedy commentedon Jul 16, 2016
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':
Issue bpo-25507: Move 4 objects from pyshell to run and switch inports.
https://hg.python.org/cpython/rev/93d325c64104"
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.
csabella commentedon Jun 8, 2017
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.
terryjreedy commentedon Jun 8, 2017
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.
csabella commentedon Jun 8, 2017
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.
tonybaloney commentedon May 6, 2019
It would be great for this issue to be revisited, there has been some further interest from users.
csabella commentedon Jul 12, 2020
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.