Многопроцессорность Python - Просто не понимаю

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

Вот пример, который я пытаюсь заставить работать. НО я не могу заставить его работать так, как задумано, и я уверен, что есть простая причина, почему. Мне может понадобиться использовать очередь, или разделяемая память, или менеджер, но сколько раз я читал документацию, я не мог понять, что это на самом деле означает и что делает. Все, что мне удалось понять до сих пор это функция пула.

Кроме того, я использую класс, так как мне нужно избегать использования глобальных переменных, как в ответе на этот вопрос .

import random

class thisClass:
    def __init__(self):
        self.i = 0

def countSixes(myClassObject):
    newNum = random.randrange(0,10)
    #print(newNum) #this proves the function is being run if enabled
    if newNum == 6:
        myClassObject.i += 1

if __name__ == '__main__':
    import multiprocessing
    pool = multiprocessing.Pool(1) #use one core for now

    counter = thisClass()

    myList = []
    [myList.append(x) for x in range(1000)]

    #it must be (args,) instead of just i, apparently
    async_results = [pool.apply_async(countSixes, (counter,)) for i in myList]

    for x in async_results:
        x.get(timeout=1)

    print(counter.i)

Может ли кто-нибудь объяснить тупым тупым, что должно быть сделано, чтобы я наконец понял, что мне не хватает и что он делает?

6
задан squid808 20 November 2018 в 15:11
поделиться