Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Python
poplib 100% cpu usage
 

Index | Next | Previous | View Flat


python at lists

Jul 16, 2008, 8:01 AM


Views: 152
Permalink
poplib 100% cpu usage

Hi all

I wrote a multithreaded script that polls mails from several pop/imap
accounts. To fetch the messages I'm using the getmail classes (
http://pyropus.ca/software/getmail/ ) , those classes use the poplib for
the real pop transaction.

When I run my script for a few hours cpu usage goes up to 100%,
sometimes even 104% according to 'top' :-) This made our test machine
freeze once. First I thought I maybe didn't stop my threads correctly
after polling an account but I attached a remote debugger and it showed
that threads are stopped ok and that the cpu gets eaten in poplib in the
function "_getline" which states in the description:

---snip---
# Internal: return one line from the server, stripping CRLF.
# This is where all the CPU time of this module is consumed.
# Raise error_proto('-ERR EOF') if the connection is closed.

def _getline(self):
---snip---


So for testing purposes I changed this function and added:
time.sleep(0.0001)
(googling about similar problems with cpu usage yields this time.sleep()
trick)

It now looks ok, cpu usage is at about 30% with a few spikes to 80-90%.

Of course I don't feel cozy about changing a standard library as the
changes will be overwritten by python upgrades.

Did someone else from the list hit a similar problem and maybe has a
better solution?


Thanks for your hints.

Best regards,
Oli Schacher
--
http://mail.python.org/mailman/listinfo/python-list

Subject User Time
poplib 100% cpu usage python at lists Jul 16, 2008, 8:01 AM

  Index | Next | Previous | View Flat
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.