#python #multithreading #memory-leaks #kill-process
#python #многопоточность #утечки памяти #kill-process
Вопрос:
Я новичок в python, поэтому большая часть кода взята из Интернета. У меня есть этот код, который я запустил на python:
def see1():
while True:
#Non returning some memory occupying code
see1=threading.Thread(target=see)
see1.daemon=True
see1.start()
Итак, мой компьютер постепенно замедлялся даже после закрытия приложения (терминала). Я полагаю, что это вызвано утечкой памяти, которая, вероятно, может выполняться в фоновом режиме?.
Я хочу знать две вещи:
- Приведет ли закрытие терминала, в котором запущена программа, к уничтожению и этого потока? Поэтому это не является причиной замедления.
- Если закрытие окна терминала не приводит к завершению потока, то как мне его завершить?
Комментарии:
1. Поток демона — это просто тот, который не может поддерживать процесс в рабочем состоянии. Если процесс завершается, поток завершается вместе с ним (поскольку это просто часть процесса). То, убивает ли закрытие терминала процесс, зависит от того, как настроен ваш терминал, и находится вне контроля вашей программы.
2. @chepner Но теоретически поток не так хорош, как сам параллельный процесс? Следовательно, независимо от вызывающего процесса?
3. Нет, совсем нет. Процесс должен активно переключаться между двумя потоками; библиотека потоков заботится об этих деталях, чтобы казалось , что они выполняются параллельно, но на самом деле они просто выполняются одновременно . Для истинного параллелизма требуется два процесса (и операционная система, которая может планировать их на отдельных процессорах).
4. @chepner согласился. В каком случае модуль потоковой обработки в python — это просто высокоскоростной мультиплексор времени? И как мне узнать, закрывает ли терминал процесс тоже? Например, откуда мне знать, как он настроен? Огромное спасибо