Многопроцессорная обработка в Python, получение результатов и корректное завершение - PullRequest
0 голосов
/ 26 ноября 2018

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

Однако я не могу заставить его завершиться должным образом (возможно, потому чтоЯ не закрываю процессы должным образом?), И есть ли лучший способ получения результатов, чем помещение / получение из очереди?(также я использую Windows)

мой файл defs.py:

import time

def greet(q, name, delay):
    time.sleep(delay)
    print("Hi " + str(name))
    q.put(name)

мой основной файл:

import time
from multiprocessing import Process, Queue
import defs

def main():
    q = Queue()
    print(q.empty()) #Should return true
    p1 = Process(target=defs.greet, args=(q, "Bob",4,))
    p2 = Process(target=defs.greet, args=(q, "BobFast",2,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    p1.close()
    p2.close()
    print(q.get())
    print(q.get())
    print(q.empty()) #Should return true

if __name__ == "__main__":
    main()
...