I'm running the following code on Windows 2000, 5.00.2195:

for x in Files:
        Command_String = 'C:\Program Files\WinRK\WinRK.exe -create ' +
os.path.join(InputDirectory, os.path.splitext(x)[0]) + ' -set
compression_method ppmz -setg include_paths none -add ' +
os.path.join(InputDirectory, x) + ' -apply -quit'
        PROC = subprocess.Popen(Command_String)
        PROC.wait()
        ...  # process WinRK output

This hangs occasionally, and is not repeatable - it never hangs on the
same file.

Replacing the PROC.wait() command with the loop

        while PROC.poll() == None: time.sleep(1)

has not hung on approximately 7,000 calls to WinRK.

Earl

On Tue, 2005-03-22 at 09:35, Jeff Epler wrote:
> On Tue, Mar 22, 2005 at 07:16:11AM -0700, Earl Eiland wrote:
> > I've been having trouble with a program hanging when using the
> > subprocess modules "wait()" method.  Replacing it with with a loop that
> > used "poll()" solved the problem.
> 
> Please include an example, and more information about what platforn you're 
> using
> This simple program worked fine for me on Linux with Python 2.4:
> #------------------------------------------------------------------------
> import subprocess, time
> 
> s = subprocess.Popen(['sleep', '2'])
> while 1:
>     time.sleep(.1)
>     if s.poll() is not None: break
> print "polling wait done", s.returncode
> 
> s = subprocess.Popen(['sleep', '2'])
> s.wait()
> print "blocking wait done", s.returncode
> #------------------------------------------------------------------------
> 
> Jeff

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to