From: Catalin Marinas Date: Fri, 31 Jul 2009 11:27:53 GMT Subject: Re: [PATCH] Work around performance bug in subprocess.Popen.communicate() Message-ID: In-Reply-To: <20090731093632.7018.24435.stgit@october.e.vtech> 2009/7/31 Karl Wiberg : > @@ -110,7 +110,9 @@ class Run: >                                  stdin = subprocess.PIPE, >                                  stdout = subprocess.PIPE, >                                  stderr = subprocess.PIPE) > -            outdata, errdata = p.communicate(self.__indata) > +            if self.__indata: > +                p.stdin.write(self.__indata) > +            outdata, errdata = p.communicate() >             self.exitcode = p.returncode >         except OSError, e: >             raise self.exc('%s failed: %s' % (self.__cmd[0], e)) But can this not lead to a deadlock if the __indata is big? The stdout of the created process is only processed once the whole __indata is written. I thought communicate() was created to avoid this issue. -- Catalin