Занимают ли процессы память после завершения работы? - PullRequest
0 голосов
/ 08 мая 2020

Я пишу рабочий сценарий, который запускает процессы в определенное c время дня. Скрипт будет работать постоянно, поэтому я боюсь, что создание и запуск процессов займут много памяти.

Я пишу короткий скрипт, чтобы увидеть, что происходит с процессом после того, как он завершит выполнение функции.

# t.py
import time
import multiprocessing as mp

def f(t=0):
    time.sleep(t)

a = mp.Process(target=f, args=(10, ))
a.start()
print(a.pid)

time.sleep(10000)

$ python3 t.py
32263

Затем я запускаю следующее, чтобы увидеть, какие процессы запущены

$ ps auxf | grep python t.py
user   32262  3.0  0.1  21360 11200 pts/0    S+   11:37   0:00      |   \_ python3 t.py
user   32263  0.0  0.0  21360  7704 pts/0    S+   11:37   0:00      |       \_ python3 t.py

Это показывает, что a все еще присутствует, несмотря на завершение работы. Я обнаружил, что pid 32263 исчезает, только если я включаю a.join() в скрипт. Но это помешает мне запускать и создавать другие процессы.

Есть ли способ навсегда убить a? a.kill() и a.terminate(), похоже, не работают.

Если бы я пренебрегал тем фактом, что a все еще появляется в ps auxf, я должен был бы продолжать создавать и запускать новые процессы , это займет память?

...