Help replacing os.system call with subprocess call

David Pratt fairwinds at eastlink.ca
Mon Apr 7 23:30:15 EDT 2008


Hi Matt. My apologies, I was away a good part of the day and evening 
today. Here are the numbers for the different methods:

original os.system call:  29.685759 s
buffered stdout call:    213.370982 s  (with 1mb buffer)
direct to stdout call:    33.378756 s

The second method worked great and is essentially equivalent in 
execution time to original call :-). This has got me smiling. Many 
thanks Matt for your help, particularly working through the second 
example that provided equivalent speed.

Regards,
David

David Pratt wrote:
> Hi Matt. Many thanks. Sorry I had not seen your second post. I'll give 
> this a try and time the completion to compare the differences and post 
> back later today to show os.system, buffered imput and using a file 
> directly for stdout.
> 
> Regards,
> David
> 
> Matt Nordhoff wrote:
>> David Pratt wrote:
>>> Hi David and Matt. I appreciate your help which has got me moving
>>> forward again so many thanks for your reply. I have been using
>>> subprocess.Popen a fair bit but this was the first time I had to use
>>> subprocess to capture large file output. The trouble I was having was
>>> with the process would just hang. Chunking was the solution. I guess I
>>> assumed this would be taken care of in the internals.
>>>
>>> Overall, I wish subprocess had some better documentation since it is
>>> definitely not a drop in replacement for os.system. In other
>>> circumstances I am using subprocess.call() for simple calls which works
>>> fine.
>>>
>>> The speed of this solution is slower than os.system. Would a queue of
>>> some kind be needed to speed this up? Has anyone implemented something
>>> like this? Many thanks.
>>>
>>> Regards,
>>> David
>> Did you see my second message? That should help performance. If not, I'm
>> totally out of my depth and have no idea at all. Sorry.
>>
>> (How much slower? 10%? 200%?)



More information about the Python-list mailing list