Adrian Casey <[EMAIL PROTECTED]> wrote: > I have a multi-threaded python application which uses pexpect to connect to > multiple systems concurrently. Each thread within my application is a > connection to a remote system. The problem is when one of the child > threads runs a command which generates an unlimited amount of output. The > classic example of this is the "yes" command. If you > execute "pexpect.run('yes')", your cpu will sit at 100% forever. > > Here is a simple multi-threaded program using pexpect which demonstrates the > problem. The command 'yes' is run in a thread. The parent says that when > the alarm goes off, run the handler function. The thread sets the alarm to > trigger after 5 seconds.
1) Don't ever mix threads and signals - you are heading for trouble! 2) pexpect has a timeout parameter exactly for this case import os, pexpect, threading def runyes(): print "Running yes command..." pexpect.run('yes', timeout=5) t = threading.Thread(target=runyes) t.start() t.join() -- Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list