#firefly-gevent Firefly-gevent — это версия Firefly, использующая библиотеку gevent вместо Twisted. В отличие от текущей версии Firefly, которая использует Twisted, gevent гораздо более лёгок.
Gevent представляет собой Python-фреймворк для сетевой разработки, основанный на корутинах. Корутина — это модель параллелизма, но в отличие от потоков и обратных вызовов, все задачи могут выполняться в одном потоке, а переход между ними осуществляется путём активной передачи управления внутри одной задачи. Её расписание происходит на программном уровне, в то время как расписание потоков находится на уровне системы.
Одним из самых заметных преимуществ gevent является его выдающаяся производительность, особенно при сравнении с традиционными решениями на основе потоков. В этом контексте известно, что производительность асинхронного I/O значительно превышает производительность синхронного I/O на основе отдельных потоков, когда нагрузка превышает определённый порог. При этом gevent предлагает интерфейсы, которые кажутся очень похожими на традиционные модели программирования на основе потоков, но на самом деле используют асинхронное I/O. Более того, он делает всё это прозрачным (то есть вам не нужно беспокоиться о том, как это реализовано; gevent автоматически сделает за вас всю работу).Игнорируя другие факторы, производительность gevent примерно в четыре раза выше, чем у решений на основе потоков (в данном тесте сравнивались Paste и Twisted, примечание переводчика: это другие Python-сетевые модули, основанные на потоках). По сравнению с однопроцессорной многопоточной моделью, многопроцессорная и корутинная модели являются более масштабируемыми. В условиях высокой конкуренции программы, созданные с использованием модели многопроцессорной, легче масштабировать, тогда как корутинная модель позволяет существенно повысить производительность параллелизма на одном процессоре, достигая цели масштабирования вверх. Поэтому можно предположить, что будущий стандарт серверного параллелизма будет состоять из одного процесса на каждое ядро, где каждый процесс будет реализован с помощью корутин. С точки зрения программирования, проблема блокировки и разблокировки общих ресурсов, возникающая при использовании многопоточной модели, всегда была головной болью для программистов. При использовании многопроцессорной модели программирование естественным образом побуждает программистов писать программы, избегающие использования общих ресурсов, тем самым повышая масштабируемость.Все современные реализации корутин в Python основаны на неконтестированном расписании, которое контролируется программистами самостоятельно, поэтому они также позволяют избежать большинства сложностей, связанных с блокировками и разблокировками. Это помогает писать более надёжный код.
Кроме того, по сравнению с другими моделями, имеющими хорошую производительность параллелизма, такими как событийные модели, микропоточные модели, реализованные с помощью корутин, имеют очень удобное и прямолинейное логическое представление, без необходимости беспокоиться о неизвестных событиях и множественных уровнях обратных вызовов (как в случае с Twisted). Для программистов, работающих с многопоточными системами, микропоточные модели, реализованные с помощью корутин, практически безболезненно увеличивают производительность параллелизма.
Firefly-gevent объединяет производительность gevent, обеспечивая обёртку для сетевых операций ввода/вывода, кэширования чтения/записи баз данных и интерфейсов взаимодействия между распределёнными процессами. Это делает разработку серверной части игры более лёгкой и простой, так как разработчики не сталкиваются с этими техническими проблемами и могут сосредоточиться на разработке логики игрового процесса.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )