Я не знаю, откуда взялось это «Stackless на 10% быстрее» в Wiki, но опять же, я никогда не пытался измерить эти показатели производительности. Я не могу придумать, что делает Stackless, чтобы изменить ситуацию так сильно.
Stackless - замечательный инструмент с несколькими организационными / политическими проблемами.
Первое исходит из истории. Кристиан Тисмер начал говорить о том, что в итоге стало Stackless около 10 лет назад. У него было представление о том, чего он хочет, но ему было трудно объяснить, что он делает и почему люди должны это использовать. Частично это связано с тем, что у него не было обучения CS относительно таких идей, как сопрограммы, и потому, что его презентации и обсуждения очень ориентированы на реализацию, что трудно для тех, кто еще не разбирается в продолжениях, чтобы понять, как использовать их в качестве решения для свои проблемы.
По этой причине исходная документация была плохой. Были некоторые описания того, как его использовать, с лучшими от сторонних разработчиков. На PyCon 2007 я выступил с докладом « Использование Stackless », который прошел довольно хорошо, согласно данным опроса PyCon. Ричард Тью проделал огромную работу, собирая их, обновляя stackless.com и поддерживая распространение, когда появятся новые версии Python. Он сотрудник CCP Games , разработчика EVE Online, которая использует Stackless как важную часть своей игровой системы.
CCP games также является крупнейшим примером из реальной жизни, который люди используют, когда говорят о Stackless. Основное руководство по Stackless - это « Введение в параллельное программирование с использованием Stackless Python » Гранта Олсона , которое также ориентировано на игры. Я думаю, это дает людям искаженное представление о том, что Stackless ориентирован на игры, тогда как игры более легко ориентированы на продолжение.
Еще одна трудность заключалась в исходном коде. В своей первоначальной форме это потребовало изменений во многих частях Python, что насторожило Гвидо ван Россума, руководителя Python. Я думаю, что отчасти причина заключалась в поддержке call / cc, которая позже была удалена как «слишком похожая на поддержку goto, когда есть более качественные формы более высокого уровня». Я не уверен в этой истории, поэтому просто прочтите этот абзац как «Раньше Stackless требовал слишком много изменений».
Более поздние выпуски не требовали изменений, и Тисмер продолжал настаивать на его включении в Python. Хотя были некоторые соображения, официальная позиция (насколько мне известно) заключается в том, что CPython - это не только реализация Python, но и как эталонная реализация, и она не будет включать в себя функции Stackless, поскольку она не может быть реализована с помощью Jython. или Железный питон.
Абсолютно никаких планов « существенных изменений в кодовой базе » нет. Эта цитата и ссылка на гиперссылку Арафангиона (см. Комментарий) относятся примерно к 2000/2001 году. Структурные изменения уже давно сделаны, об этом я уже говорил. Stackless, как сейчас, является стабильным и зрелым, с небольшими изменениями в кодовой базе за последние несколько лет.
И последнее ограничение, связанное с Stackless, - нет сильных сторонников Stackless. Тисмер сейчас глубоко вовлечен в PyPy , который является реализацией Python для Python. Он реализовал функциональность Stackless в PyPy и считает ее намного лучше, чем сам Stackless, и считает, что PyPy - это путь будущего. Тью поддерживает Stackless, но его не интересует защита интересов. Я подумывал о том, чтобы сыграть эту роль, но не понимал, как я могу заработать на этом.
Хотя, если вы хотите потренироваться в Stackless, не стесняйтесь обращаться ко мне ! :)
Меня тоже интересуют ответы здесь. Я немного поиграл со Stackless, и похоже, что это будет хорошее надежное дополнение к стандартному Python.
PEP 219 действительно упоминает потенциальные трудности с вызовом кода Python из кода C, если Python хочет перейти на другой стек. Должны быть способы обнаружить и предотвратить это (чтобы избежать захламления стека C). Я думаю, что это послушно, поэтому мне также интересно, почему Stackless должен стоять сам по себе.
источник