Что такое сбор мусора? - PullRequest
0 голосов
/ 22 декабря 2018

Я просматривал PYMOTW Дуга Хеллмана для subprocess модуля , когда получил два вопроса.Код здесь ниже.

# subprocess_run_output.py
import subprocess

completed = subprocess.run(
    ['ls', '-1'],
    stdout=subprocess.PIPE,
)
print('returncode:', completed.returncode)
print('Have {} bytes in stdout:\n{}'.format(
    len(completed.stdout),
    completed.stdout.decode('utf-8'))
)

В своем коде для subprocess_run_output.py он использует len вместо sys.getsizeof, чтобы узнать, сколько байтов составляет stdin.Я предполагаю, что это потому, что объект completed.stdout имеет больше, чем просто строка, и sys.getsizeof вернет больше, но len даст фактическую длину строки в байтах, как указано в вопрос 1 и вопрос 2 .Пожалуйста, поправьте меня, если я ошибаюсь.

Во время исследования я натолкнулся на ответ Мартина в вопросе 1 , который звучит так же, как документация.Документация гласит:

getsizeof () вызывает метод sizeof объекта и добавляет дополнительные издержки сборщика мусора, если объектом управляет сборщик мусора.

Мой другой вопрос - что это за дополнительные затраты на сборку мусора?Это накладные расходы, которые занимают больше времени?Это дополнительная задача?Дополнительная память?Или все дела?Почему это дополнительно?Разве «дополнительные» и «накладные расходы» почти не означают что-то дополнительное?Я не очень хорошо понимаю C, поэтому не смог расшифровать ответ на этот вопрос 2 .

...