Process details

Quinn Dunkan quinn at riyal.ugcs.caltech.edu
Thu Mar 15 21:14:07 CET 2001


On Thu, 15 Mar 2001 09:40:38 -0800, Timothy Grant <tjg at exceptionalminds.com>
wrote:
>...I just went and looked at my code and discovered the major
>bottleneck--I think. The problem comes due to the fact that not
>all process list all entries in the /status file. This means
>that a sequential read assigning to variables won't work, so I
>am actually looking for entry names in a loop.
>
>I just added a break statement and shaved three seconds of the
>time! I'm sure there is more room to optimize, but exiting my
>loop after I found what I was looking for sure helps.

Not that you asked or anything <wink>, but the 'stat' file has mostly the same
info and is more machine-readable.  You should be able to do something like:

class Proc:
    def __init__(self, stats):
        self.pid = int(stats[0])
        self.name = stats[1] # strip parens if swapped out
        self.state = stats[2]
        # etc.

procs = [ Proc(open('/proc/%s/stat' % s).read().split())
    for s in os.listdir('/proc') if s.isdigit() ]

for p in procs:
    print p.pid, p.name, p.state



More information about the Python-list mailing list