Изначально у каждой программы есть один поток - он же "главный". Этот поток создается операционной системой при запуске процесса.
С точки зрения программиста почти не отличается от созданных вручную. Практически же существуют некоторые особенности.
Например, некоторые библиотеки для работы с графическим интерфейсом ожидают, что цикл обработки сообщений будет запущен в главном потоке, а не в каком-нибудь другом. То же самое относится и к высокоуровневым библиотекам для работы с сетью.
Приводит к:
| Изначально у каждой программы есть один поток - он же
| "главный". Этот поток создается операционной системой при запуске процесса. С
| точки зрения программиста почти не отличается от созданных вручную. Практически
| же существуют некоторые особенности. Например, некоторые библиотеки для работы с
| графическим интерфейсом ожидают, что цикл обработки сообщений будет запущен в
| главном потоке, а не в каком-нибудь другом. То же самое
| относится и к высокоуровневым библиотекам для работы с сетью.
Понятно, что самому написать её проще простого, как пример:
def email_text_quote(text, width=10, prefix="|"):
items = []
words = re.findall(r'[^\s]+', text, re.UNICODE)
while words:
chunk = words[0:width]
del words[0:width]
items.append(u"{} {}".format(prefix, u" ".join(chunk)))
return u"\n".join(items)
Но хочется что-то готовое, поменьше своих велосипедов.
Например етсь шаблонные фильтры truncatechars, truncatewords, которые в итоге использую Truncator.
Вообщем кто знает встроенный в Django аналог - пишите!