Closed GoogleCodeExporter closed 9 years ago
Implemented in Version Control.
You need to add to your editor file:
from __main__ import *
Original comment by pyscripter
on 11 Mar 2012 at 12:23
Thanks for this improvement! However, I'm testing it in 2.5.0.0 x86 and I've
run into two problems:
1. Too Slow - With large libraries loaded into the interactive interpreter, the
code completion in the Code Editor take almost 10 seconds to create and display
the list. Obviously, this makes the feature unusable.
The Code Complete for this same library is very fast in the Interactive
Interpreter, so I assume there is some bug causing this problem.
To replicate, try importing numpy into the interpreter and trying code
completion in the editor. (This is still faster than our library as this take
about 4 seconds compared to ours which is almost double that).
2. Code Completion does not work for lists of objects:
Trivial Example code to replicate the issue:
Add the following to the interactive window:
class Knob():
def Turn():
pass
class Radio():
def __init__(self):
self.Knobs = [Knob(), Knob()]
CarStereo = Radio()
In the interpreter the following Code Completion works fine:
CarStereo.Knobs[0]. <= Works!
Doing the same in the Code Editor (with the from __main__ import *) does not
work.
Original comment by Chris.W....@gmail.com
on 19 Mar 2012 at 3:19
[deleted comment]
It seems that my item #1 above only happens using the Remote (Wx) python
engine. Using "Internal" this slow down doesn't appear to happen.
Original comment by Chris.W....@gmail.com
on 19 Mar 2012 at 3:56
I am not sure why. Here (tested with python 3.2.2 64bit) numpy code completion
comes up instantaneously in the editor (Core I5 laptop). Any clues so I can
address the issue?
As to your second point you need to understand that code completion in the
editor works differently and will never be as good as in the interpreter. Code
completion in the editor never executes code or evaluates expressions. It is
just using introspection on live objects. So you have to live with such
limitations.
Original comment by pyscripter
on 19 Mar 2012 at 4:47
1) I'm running a 3 year old laptop, so this is probably part of the issue.
Seemingly the main clue is that the Internal python engine is much faster than
the Remote (Wx).
The fact that the code completion in the Interactive Interpreter runs smoothy
makes me think it's a code issue and not a performance issue. I don't know if
there is any background caching going on in the interpreter, but not in the
editor...
I'm currently running:
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on
win32. (On XP SP3)
Perhaps that shows a different behavior on your system than 3.2.2?
2) Understood. Fair enough.
Thanks!
Original comment by Chris.W....@gmail.com
on 19 Mar 2012 at 5:13
Just to make sure.
a) You start PyScripter with the remote engine.
b) In the interpreter you issue
>>> import numpy
c) In an editor window you type
from __main__ import *
numpy.
and you wait 4 seconds? This cannot be explained by the speed of the computer.
Something else must be affecting performance. As I said here it runs
immediately.
PyScripter communicates with the remote python engine with TCP/IP.
Is some firewall slowing things down?
Can you try on a different machine to see whether the issue exists?
Explanation
Please note that the speed of code completion and the editor will not be the
same. When you type numpy in the interpreter code completion evaluates the
expression "numpy" and gets the namespace of the result. On the other hand in
the editor code completion examines the whole module __main__ locates numpy in
its namespace and then introspects numpy. So the heavier __main__ is the
slower this feature will be.
Original comment by pyscripter
on 19 Mar 2012 at 5:32
Your description of my behavior is accurate.
I'm running PyScripter on my Work laptop right, perhaps you're right and
Symantec Endpoint Protection is to blame. This evening I'll test again on my
home PC.
(Thanks for your prompt feedback)
Original comment by Chris.W....@gmail.com
on 19 Mar 2012 at 5:42
Okay, I tried again on my home PC which is running Windows 7, a much newer and
faster machine. It has the same issue, in fact I would estimate the delay
between typing the period and the code completion window opening is longer than
my slower work laptop.
I spent some time trying to ensure all the Windows firewalls are wide open, and
I think all the settings are okay.
I have another personal laptop running XP SP3, same version of Pyscripter and
Python, yet this one appears to work correctly. This laptop is much slower, but
the code complete time in the editor matches closely with that in the
interpreter.
(I should also note this laptop is also not seeing the KeyboardInterrupt
problem I mentioned here:
http://groups.google.com/group/pyscripter/browse_thread/thread/6199fac994b9417c
)
This looks to be a tricky problem to debug. Anyone else having similar problems?
Original comment by Chris.W....@gmail.com
on 20 Mar 2012 at 1:51
[deleted comment]
It (the steps in comment 7) takes about 2 seconds on my (very slow) laptop when
I'm using the *remote engine*. When I type `numpy.` in the interpreter, on the
other hand, it takes <500 ms. Using the *internal engine*, autocomplete happens
quickly in both the interpreter and the editor.
I'm running
Python 2.7.2 -- EPD 7.1-2 (32-bit)
Pyscripter 2.5.1.0 x86 (would be nice if I could copy this from the help->about
screen, by the way)
Thanks for implementing this feature! To make it more discoverable, I would
consider adding a checkbox to the context menu for the interpreter that says
"Add interpreter code completion to editor" and make that a global option. Or
something like that :-)
Original comment by pckuj...@gmail.com
on 20 Mar 2012 at 5:05
Could you please test with version 2.5.3. I have made some changes that may
have improved the speed of completion of live objects in the editor.
Original comment by pyscripter
on 24 Mar 2012 at 3:20
I upgraded and now PyScripter won't open. I also tried uninstalling and
reinstalling and it throws the following error:
Python could not be properly initialized. We must quit.
If I use the open latest version shortcut, the 2.7 or 2.6 shortcut it also
throws this error:
Error 193: Could not open Dll "python26.dll"
I'm guessing it's a new bug in PyScripter, but perhaps something in my Python
install got messed up... let me know what you think.
Original comment by Chris.W....@gmail.com
on 24 Mar 2012 at 6:39
By accident, I included the 64bit executable in the 32-bit distribution.
Sorry. Will reupload tonight.
Original comment by pyscripter
on 24 Mar 2012 at 10:00
No problem. I'll have a look once it's up. Thanks!
Original comment by Chris.W....@gmail.com
on 24 Mar 2012 at 4:31
Okay, PyScripter runs again.
It seems the live code completion is a little bit faster, but still slow enough
that it's not usable for me. The fact that my 10 year old home laptop works
fine, while my new PC doesn't makes me think something else besides PyScripter
is causing the slow down. When I have more time I'll do a full reinstall of
Python and all the libraries.
Original comment by Chris.W....@gmail.com
on 24 Mar 2012 at 11:25
Chris,
The mechanism for introspection of live objects in the editor is now the same
as the one used in the variables window. Do you see the same issue in the
variables window? i.e. if you do
>> import numpy
in the interpreter and then go to the Variables window and try to expand numpy
do you see similar delays? (Here it is instant).
You say the old machine is faster than the new one. How many cores does your
new machine have? I wonder whether this is due to some contention due to
Python's Global interepreter lock. However I have seen no such issues on my
dual core computers.
I have seen some other reports about slowness (e.g. Issue 602) but it appears
to be a rare exception rather than the rule, since PyScripter is used widely
and often for serious business Python development. I would be very interested
though to find out what are the causes of this problem.
Original comment by pyscripter
on 25 Mar 2012 at 12:42
So, expanding the numpy in the variables window as you described is instant,
while the editor is slow. Interesting.
My new machine is an AMD Athlon II X4 635 Processor 2.9GHz (So, 4 cores).
Running windows 7 - 64 bit.
My Laptop is a single core AMD Turion 64 Mobile running XP SP3.
My work laptop also experiences this issue, unfortunately I can't check its
specs till Monday. It runs XP, but I can't remember off-hand if it's single or
multi core, or if it's Intel or AMD.
I wonder if it has something to do with Multi-core AMDs... Or maybe I should
try using the 64-bit Python?
Original comment by Chris.W....@gmail.com
on 25 Mar 2012 at 1:47
Original issue reported on code.google.com by
Chris.W....@gmail.com
on 5 Aug 2011 at 2:47