<div dir="ltr"><br><br>On Sun, Sep 9, 2018 at 9:47 PM Markus Metz <<a href="mailto:markus.metz.giswork@gmail.com">markus.metz.giswork@gmail.com</a>> wrote:<br>><br>><br>><br>> On Wed, Sep 5, 2018 at 10:43 AM Markus Neteler <<a href="mailto:neteler@osgeo.org">neteler@osgeo.org</a>> wrote:<br>> ><br>> > Hi,<br>> ><br>> > AFAIK Python buffers (i.e. effectively delays)  stderr output which is<br>> > unhelpful in the GRASS GIS context.<br>> ><br>> > Searching for a solution, I found this reference: sys.stdout.flush()<br>> > e.g.<br>> > <a href="https://stackoverflow.com/questions/10019456/usage-of-sys-stdout-flush-method">https://stackoverflow.com/questions/10019456/usage-of-sys-stdout-flush-method</a><br>><br>> That should be<br>> sys.stderr.flush()<br>> right?<br>><br>> Regarding python's multiprocessing, it makes sense that stderr is suppressed because you would not know which process process produced which stderr (or stdout) message. There must be a method in python to redirect stderr and stdout for each process to a unique file, otherwise it would not be possible to find out why some process failed.<br>><br>> Such a method would need to be implemented in each module usings python's multiprocessing.<br><br>maybe worth a try also with stderr:<br><br><a href="https://stackoverflow.com/questions/1501651/log-output-of-multiprocessing-process">https://stackoverflow.com/questions/1501651/log-output-of-multiprocessing-process</a><br><br>i.e. within the function that is the target of multiprocessing.Process<br><br>sys.stderr = open(str(os.getpid()) + ".err.log", "w")<br><br><div>and it seems to be a good idea to always sys.stderr.flush() at the end of the subprocess</div><div><br></div><div>Markus M<br></div></div>