Большое количество python многопроцессорных вызывает ошибки памяти - PullRequest
0 голосов
/ 27 апреля 2020

Intro

Привет, я пытаюсь запустить windows команду ОС в al oop, используя многопроцессорную обработку python 3, но когда l oop становится большим (тысяча команд) Я получаю ошибки памяти, и процесс завершается / никогда не завершается.

Почему?

Мне нужно выполнить 65 000 команд как можно быстрее, и одна за другой кажется неэффективной. эти команды являются windows нормальной командой (например, dir).

- мне не нужны результаты команды! просто для его запуска.

Код

import multiprocessing
import subprocess

def worker(num):
    print("worker:", num)
    subprocess.Popen('dir') # or os.system('dir') for example
    return

def main():
    jobs = []

    for i in list(range(1,65535)):
        i = str(i)
        p = multiprocessing.Process(target=worker, args=(i,))
        jobs.append(p)
        p.start()

Вопрос

Что я здесь не так делаю? Какой правильный способ запуска команды windows OS несколько раз с python (при сохранении любого потока).

1 Ответ

0 голосов
/ 28 апреля 2020

Вы должны ограничить число работающих одновременно. Вы можете использовать p.is_alive(), чтобы проверить, сколько из них запущено в данный момент.

...