Я пишу рабочий сценарий, который запускает процессы в определенное 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
, я должен был бы продолжать создавать и запускать новые процессы , это займет память?