Форматирование вывода многопоточного вывода

#python #python-2.7 #python-multithreading

Вопрос:

 from multiprocessing import Pool
from functools import partial

def run_test_function(x, fun_arg2, fun_arg3, fun_arg4):
    # this is an example
    for a in fun_arg2:
        for b in fun_arg3:
            print(x)
            print(a)
            print(b)
            print(fun_arg4)

if __name__ == "__main__":
    arg1 = 1,2,3,4
    arg2 = "hello"
    arg3 = "world"
    arg4 = "!"

    process_func = partial(run_test_function, fun_arg2=arg2, fun_arg3=arg3, fun_arg4=arg4)

    my_pool = Pool(8)
    my_pool.map(process_func, arg1)
 

Для этого кода я получаю вывод, как показано ниже:

 ~/test $ python2.7 so10.py
1 
  hello 
     world 
         !
2 
  hello 
     world 
          !
3 
   hello 
      world 
           !
4 
     hello 
         world 
              !
 

Проблема с этим кодом заключается в том, что когда этот вывод содержит длинную строку, в то время вывод непонятен. На данный момент я ожидаю, что результат будет таким :

 1 
hello 
world 
!
2 
hello 
world 
!
3 
hello 
world 
!
4 
hello 
world 
!
 

Более того, после получения вывода мой интерфейс командной строки зависает, не могли бы вы, пожалуйста, дать некоторые данные по этому поводу?

Ответ №1:

Иногда это происходит, когда интерпретация CR/LF нарушается. Вы всегда можете поставить строку в конце своего кода :

 import os
os.system('stty sane')