Inline
> 1.) Why are you removing the .pyc file?
After I had run the script once and subsequently changed the class
file, I would run the script again, and it would use the pyc file from
the older revision of the script. I got frustrated with having to
manually delete the pyc file before rerunning the script after every
edit, so I built it in.
> 2.) Reading lines from a file is better done like so:
>
> arrLines = open('datafiles/'+filename+'.tabdata').readlines()
>
> and the 'r' flag is the default, you can omit it.
I know. In fact, this was the original code. However, I have read in
many places that if the file is *massive*, which is true in my case, it
is far more efficient to use the line-by-line implicit method I used.
On a decent machine it doesn't really make a noticeable difference, but
some of the ".tabdata" files I'm parsing are > 20MB plain text, so I
figured that warranted the alternative approach.
> 3.) You can create the Test instances like so:
>
> arrTests = [Test() for i in range(cntTests)]
Figures. I'm overzealous with the list comprehensions below, and
totally ignorant of them here...
> 4.) You don't need "saveout = sys.stdout", sys.__stdout__ is already
> this.
Cool.
> 5.) In "check = 0.6 * float(depth)" the call to float is redundant and
> can be eliminated.
Understood.
> 6.) In "sumx = sum([x[0] for x in self.data])", etc.. you can leave out
> the []'s. There's no need to create a list, the ()'s in the call to
> sum() suffice to make a generator comprehension.
That I didn't know, and I'm glad I do now.
>
> FWIW, if you're still having trouble later I'll try to take another
> look at your code. Print statements and debuggers are your friends,
> and John Machin's advice seems good to me.
>
> Peace,
> ~Simon
Thanks to John M's debugging code I was led to the source of my
problems, or so it seems.
I'll post a follow up from work tomorrow (EDT) stating whether or not
the issue has been completely resolved.
Thank you both very much.
Aside --
John M, I realized what you meant about splitting the code between the
class and the processing file. At first it seemed intuitive, but
stepping back, it doesn't really make sense that a test would be able
to analyze and take an inventory of *itself*. I think I'm going to
reorganize the code such that the Test class does nothing but provide a
barebones data structure with which to work.
And regarding the file separation, it's totally personal preference. It
scales well, at least.
Another Aside --
Does anybody see any major bottlenecks in the code? I'd like to be able
to speed up the program considerably. Psyco was really no help.
Again, thanks
--
http://mail.python.org/mailman/listinfo/python-list