according to python's docs Popen.communicate() is the preferred way to read data
in order to avoid deadlocks