#python #multiprocessing
Вопрос:
Я пытаюсь создать какие-то функции, которые работают параллельно с многопроцессорной обработкой из python. Сценарий выглядит так:
from multiprocessing import Process
def func1():
for x in range(0,10000000):
print(x, end = 'r')
def func2():
for x in range(10000000,20000000):
print(x, end ='r')
if __name__ == '__main__':
p1 = Process(target=func1)
p1.start()
p2 = Process(target=func2)
p2.start()
p1.join()
p2.join()
Однако затем я запускаю этот скрипт, и func1, и func2 переопределяют вывод друг друга в одной строке, но не в отдельных строках. Кто-нибудь знает, как решить эту проблему?
Комментарии:
1. Почему
r
это ? Вы работаете в Windows?2. это может быть большой проблемой. Некоторые консоли/терминалы могут иметь специальные коды для перемещения курсора, и вы можете добавить их в строку, чтобы переместить текст в нужное место. Но если консоль не использует коды, то вы не сможете ее решить. Вы можете проверить проклятия или аналогичные модули
3. @drum да, я запускаю его в Windows
4. Попробуйте
rn
вместо этого или полностью избавьтесь от этого5. @ArtiomKozyrev sr Я заболел несколько дней назад. Я пробую твой и Бубу метод
Ответ №1:
Обычно при печати выходные данные буферизуются, но если аргумент ключевого слова flush True
равен , поток принудительно сбрасывается. Это должно значительно помочь. И нет необходимости указывать конечный аргумент; по print
умолчанию функция будет использовать правильные коды для создания новой строки:
print(x, flush=True)
Комментарии:
1. flush=True не работает, вывод по-прежнему заливает экран