Я совершенно новичок в многопроцессорности Python.Я пытаюсь реализовать процесс в моем коде.Код работает нормально для ограниченного числа процессов.Но когда я увеличиваю количество процессов, процесс переходит в бесконечный цикл.
По сути, я пытаюсь распараллелить функцию квадрата и сохранить значение в массиве.Функции возвращают значения через очереди.
from multiprocessing import Process,Queue
import time
import numpy as np
import os
def print_square(num,pos,a,que1):
"""
function to print square of given num
"""
a[pos] = num * num
que1.put((pos,a))
return
if __name__ == "__main__":
# number of process
NP=int(100)
# creating thread
p=[]
num = 2
a = np.zeros(NP)
que1 = Queue()
for i in range (NP):
p1 = Process(target=print_square, args=(num,i,a,que1))
# q.append(que1)
num = num + 1
p.append(p1)
print('process created')
start_time=time.time()
# starting processes
for process in p:
print('cr - i', process)
process.start()
print('procesS started')
for process in p:
print('join',process,time.time()-start_time)
process.join()
process.terminate()
result = []
print('result started')
for process in p:
print(process)
result.append(que1.get(block=False))
print('result completed')
# result.sort()
result1 = [r[1] for r in result]
for i in range(len(result1)):
a[i] = result1[i][i]
a1 = time.time()-start_time