Darren Thomas дает хороший ответ. Однако одна большая разница между Java и подходами Python - то, что с подсчетом ссылок в общем падеже (никакие циклические ссылки) объекты сразу очищены, а не в некоторую неопределенную более позднюю дату.
, Например, я могу записать неаккуратный, непортативный код в CPython такой как
def parse_some_attrs(fname):
return open(fname).read().split("~~~")[2:4]
и дескриптор файла для того файла, который я открыл, будет сразу очищен, потому что, как только ссылка на открытый файл уходит, файл собран "мусор", и дескриптор файла освобожден. Конечно, если я выполню Jython или IronPython или возможно PyPy, тогда сборщик "мусора" будет не обязательно значительно позже работать; возможно у меня закончатся дескрипторы файлов сначала, и моя программа откажет.
, Таким образом, НЕОБХОДИМО писать код, который похож
def parse_some_attrs(fname):
with open(fname) as f:
return f.read().split("~~~")[2:4]
, но иногда людям нравится полагаться на подсчет ссылок к всегда свободному их ресурсы, потому что это может иногда делать код немного короче.
я сказал бы, что лучший сборщик "мусора" является тем с лучшей производительностью, которая в настоящее время, кажется, стиль Java сборщики "мусора" поколений, которые могут работать в отдельном потоке и имеют всю эту сумасшедшую оптимизацию и т.д. Различия к тому, как Вы пишете свой код, должны быть незначительными и идеально не существовать.
The asynchronous processing in .NET does indeed provide a basis for building comet applications. Specifically, it's the IHttpAsyncHandler that can be used as a foundation.
That said, without a third-party library, implementing Comet from scratch is... difficult. There's a .NET implementation of Comet for IIS called WebSync that would compare against Jetty.