Я думаю, что лучшим способом для больших проектов является optparse, но если Вы ищете простой способ, возможно , http://werkzeug.pocoo.org/documentation/script является чем-то для Вас.
from werkzeug import script
# actions go here
def action_foo(name=""):
"""action foo does foo"""
pass
def action_bar(id=0, title="default title"):
"""action bar does bar"""
pass
if __name__ == '__main__':
script.run()
, Таким образом, в основном каждая функция action_* подвергнута командной строке, и хорошее сообщение справки сгенерировано бесплатно.
python foo.py
usage: foo.py []
foo.py --help
actions:
bar:
action bar does bar
--id integer 0
--title string default title
foo:
action foo does foo
--name string
Итак, теперь ответ должен быть очевиден: любая выделенная память не связана с потоками, поэтому это не free () d при выходе из потока. Конечно, вы можете предоставить особую обработку механика, но это не выполняется автоматически.
Хорошая сторона этого состоит в том, что вы можете передавать распределение памяти между потоками, другими словами выделять такой ресурс в одном потоке, а затем освобождать его от другого (хорошо это для вас или нет).
Надеюсь, это будет полезным объяснением, подумайте об указателе выделенной памяти, как о любом дескрипторе уровня процесса.
Нет - память с неправильной локализацией освобождается только с помощью явного «освобождения».
Я почти уверен, что это не так, вы должны использовать free ().
Нет. Хотя при выходе из процесса любая искаженная память освобождается, этого не происходит при выходе из потока.