Я просматривал 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 .