Подпроцессы завершены, но не завершаются при использовании многопроцессорности в python - PullRequest
0 голосов
/ 25 марта 2020

Мой демонстрационный код показан ниже. Я понимаю, что все подпроцессы завершены, но они не завершаются. Что-то не так с моим кодом? Python версия: 3.7.4, Операционная система: win10

import multiprocessing as mp

res_queue = mp.Queue()

def runCalculation(i):
    count_list = []
    total_count = i

    for k in range(100000):
        total_count += k
        count_list.append(total_count)
    print('task {} finished calculation, putting results to queue'.format(i))

    for item in count_list: res_queue.put(item)
    print('task {} has put all results to queue'.format(i))


def initPool(res_queue_):
    global res_queue
    res_queue = res_queue_


def mainFunc():

    p = mp.Pool(initializer=initPool, initargs=(res_queue,))
    for i in range(20): p.apply_async(runCalculation, args=(i,))

    print('Waiting for all subprocesses done...')
    p.close()
    p.join()
    print('All subprocesses done.')


if __name__ == '__main__':
    mainFunc()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...