Процесс идет в бесконечном ожидании, если увеличивается количество процессов - PullRequest
0 голосов
/ 29 мая 2018

Я совершенно новичок в многопроцессорности 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

1 Ответ

0 голосов
/ 30 мая 2018

Возможно, вы попали под ограничение компьютера / ОС.Например, см. здесь .Сколько ядер у вас на машине?Я сомневаюсь, что это где-то близко к 100, и поэтому маловероятно, что вам потребуется порождать столько процессов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...