Я новичок в многопроцессорном, многопоточном и асинхронном программировании в целом.Я решил, чтобы ускорить мой код (для выполнения миллионов вычислений), чтобы он использовал несколько процессов (также, это хороший выбор?)
Однако я не могу заставить его завершиться должным образом (возможно, потому чтоЯ не закрываю процессы должным образом?), И есть ли лучший способ получения результатов, чем помещение / получение из очереди?(также я использую 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()