Почему число процессов влияет на формат вывода при использовании многопроцессорности. Pool (N) - PullRequest
2 голосов
/ 18 февраля 2020

Я взял этот код и слегка его изменил, чтобы он соответствовал Python3 .8.

Проблема, с которой я столкнулся, состоит в том, что на выходе изначально есть какие-то символы обмоток Я подозреваю, что это символ перевода строки, который неправильно преобразован? Смотрите выходные фрагменты ниже. Я не мог решить это, поэтому прежде чем тратить на это слишком много времени, я протестировал программу с разным количеством процессов. По какой-то причине выходные данные меняются, когда я увеличиваю это значение.

import multiprocessing
from textwrap import dedent
from itertools import zip_longest

def process_chunk(d):
    #test function, change this later
    return d 

def grouper(n, iterable, padvalue=None):
    return zip_longest(*[iter(iterable)]*n, fillvalue=padvalue)

outfile= open("C:/Users/#####/Desktop/test.txt","w+")

if __name__ == '__main__':
    #open input file
    test_data = open('D:/test.txt')

    # Create pool (p)
    p = multiprocessing.Pool(4)
    for chunk in grouper(1000, test_data):
        results = p.map(process_chunk, chunk)
        for r in results:
            outfile.write(f'{r}') 

Приведенные ниже примеры относятся к концу файла, поэтому я подозреваю, что выходные данные «None» и 敮 являются лишь частью фрагмента. Ожидаемый вывод:

5.2615 19.522 -0.968 3 134 120 124
5.9195 19.695 -0.828 49 197 192 170
6.0985 19.192 -0.984 0 150 137 130
5.2255 19.915 -0.939 3 92 92 81
6.3825 19.286 -1.166 5 100 99 92
5.8965 19.705 -0.411 67 211 209 205

С многопроцессорной обработкой. Бассейн (4) (тот же вывод для N = 2 до N = 10)

5.9195 19.695 -0.828 49 197 192 170਍ഀ
6.0985 19.192 -0.984 0 150 137 130਍ഀ
5.2255 19.915 -0.939 3 92 92 81਍ഀ
6.3825 19.286 -1.166 5 100 99 92਍ഀ
5.8965 19.705 -0.411 67 211 209 205਍ഀ
潎

С многопроцессорной обработкой. ) (тот же вывод для N = 11 до N = 24)

5 . 2 6 1 5 1 9 . 5 2 2 - 0 . 9 6 8 3 1 3 4 1 2 0 1 2 4

5 . 9 1 9 5 1 9 . 6 9 5 - 0 . 8 2 8 4 9 1 9 7 1 9 2 1 7 0

6 . 0 9 8 5 1 9 . 1 9 2 - 0 . 9 8 4 0 1 5 0 1 3 7 1 3 0

5 . 2 2 5 5 1 9 . 9 1 5 - 0 . 9 3 9 3 9 2 9 2 8 1

6 . 3 8 2 5 1 9 . 2 8 6 - 1 . 1 6 6 5 1 0 0 9 9 9 2

5 . 8 9 6 5 1 9 . 7 0 5 - 0 . 4 1 1 6 7 2 1 1 2 0 9 2 0 5

None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...