I am using Python 2 subprocess with threading threads to take standard input, process it with binaries A, B, and C<
subprocess
threading
A
B
C<
Your calls to subprocess.Popen() implicitly specify the default value of bufsize, 0, which forces unbuffered I/O. Try adding a reasonable buffer size (4K, 16K, even 1M) and see if it makes any difference.