Python multiprocessing.Process OSError: [Errno 24] Слишком много открытых файлов - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть следующий код:

def formatGravities(gravities):
    # create a list to keep all processes
    processes = []

    # create a list to keep connections
    parent_connections = []

    formatted_gravities = []

    # create a process per instance
    for gravity in gravities:
        # create a pipe for communication
        parent_conn, child_conn = Pipe()
        parent_connections.append(parent_conn)

        # create the process, pass arguments
        process = Process(target=formatGravity,
                          args=(gravity, child_conn))
        processes.append(process)

    # start all processes
    for process in processes:
        process.start()

    # make sure that all processes have finished
    for process in processes:
        process.join()

    for parent_connection in parent_connections:
        formatted_gravities.append(parent_connection.recv()[0])

    return formatted_gravities

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

У меня есть требование, что я не могу использовать многопроцессорную обработку. Очередь или многопроцессорную обработку. Бассейн.

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