Stackless python не использует любую многоядерную среду, в которой он работает.
Это распространенное заблуждение о Stackless, поскольку оно позволяет программисту использовать преимущества программирования на основе потоков. Для многих эти два тесно связаны, но на самом деле это две разные вещи.
Internally Stackless использует циклический планировщик для планирования каждого тасклета (микропотоки), но ни один тасклет не может быть запущен одновременно с другим. Это означает, что если один тасклет занят, другие должны подождать, пока этот тасклет не откажется от управления. По умолчанию планировщик не останавливает тасклет и не передает процессорное время другому. Задача тасклета состоит в том, чтобы планировать себя обратно в конец очереди расписания, используя Stackless.schedule () или заканчивая вычисления.
Таким образом, все тасклеты выполняются последовательно , даже если доступно несколько ядер.
Причина, по которой Stackless не имеет многоядерной поддержки, заключается в том, что это значительно упрощает потоки. И это только то, что без стеков это все:
с официального сайта без стека
Stackless Python - улучшенный
версия программирования на Python
язык. Это позволяет программистам
пожинать плоды на основе потоков
программирование без представления
и проблемы сложности, связанные
с обычными нитками.
микропотоки, которые добавляет Stackless
Python дешевый и легкий
удобство, которое может, если используется
правильно, предоставьте следующие преимущества:
- Улучшена структура программы.
- Более читаемый код.
- Увеличение производительности программиста.
Вот ссылка на дополнительную информацию о нескольких ядрах и без стеков.