Что такое вытеснение / Что такое выгружаемое ядро? Для чего это хорошо?

Не используйте int напрямую, если ваши фактические данные содержат float -подобные str с. Вместо этого используйте float:

x = [['a', '1', ' 2.22', ' 3', '4', ' 5'],
 ['b', '11', ' 12', ' 13', ' 14', ' 15'],
 ['c', '21', ' 22', ' 23', ' 24', '25']]

new_list = [list(map(float, s[1:])) for s in x]
print(new_list)
[[1.0, 2.22, 3.0, 4.0, 5.0],
 [11.0, 12.0, 13.0, 14.0, 15.0],
 [21.0, 22.0, 23.0, 24.0, 25.0]]

В случае, если может быть какая-то пустая строка '':

x = [['a', '1', ' 2.22', ' 3', '4', ' 5'],
 ['b', '11', ' ', ' 13', ' 14', ' 15'],
 ['c', '21', ' 22', ' 23', ' 24', '25']]

new_list = [] 
for l in x:
    new_list.append([float(s) if s.strip() else None for s in l[1:]])
print(new_list)
[[1.0, 2.22, 3.0, 4.0, 5.0],
 [11.0, None, 13.0, 14.0, 15.0],
 [21.0, 22.0, 23.0, 24.0, 25.0]]
57
задан BobbyShaftoe 3 May 2009 в 13:40
поделиться

4 ответа

Вы приближаетесь к нему в перевернутом виде.

В вашем движке должно быть следующее:

Весь код, который оказался общим для вашего первого и ваша вторая игра.

Сначала напишите игру. Не пишите движок, потому что, как вы узнали, вы не знаете, что он должен содержать или как он должен быть разработан. Вместо этого напишите игру.

Как только вы получите эту игру, напишите другую игру . Затем, когда вы это сделаете, изучите код второй игры. Сколько из этого было повторно использовано из первой игры?

Все, что было повторно использовано, должно быть затем преобразовано в отдельный проект. Этот проект теперь является вашим игровым движком.

Это не значит, что вы не должны планировать или не пытаться писать хороший код. Но убедитесь, что вы мы работаем над чем-то конкретным, над чем можно отличить хорошую реализацию от плохой. Хорошая реализация игры, которая работает, забавна и не дает сбоя. Сначала напишите свой код для достижения этих целей.

Хорошая реализация движка? Это сложнее. Что такое хорошая реализация рендерера? ИИ рамки? Системы частиц? В конечном счете, единственный способ определить, есть ли у вас хороший движок, это посмотреть, насколько хорошо он работает в реальной игре . Поэтому, если у вас нет игры, у вас нет возможности оценить ваш движок. И если у вас нет возможности оценить ваш движок, у вас нет возможности судить, действительно ли какой-то код, который вы пишете, действительно полезен.

это тот, который работает, это весело, и не терпит крах. Сначала напишите свой код для достижения этих целей.

Хорошая реализация движка? Это сложнее. Что такое хорошая реализация рендерера? ИИ рамки? Системы частиц? В конечном счете, единственный способ определить, есть ли у вас хороший движок, это посмотреть, насколько хорошо он работает в реальной игре . Поэтому, если у вас нет игры, у вас нет возможности оценить ваш движок. И если у вас нет возможности оценить ваш движок, у вас нет возможности судить, действительно ли какой-то код, который вы пишете, действительно полезен.

это тот, который работает, это весело, и не терпит крах. Сначала напишите свой код для достижения этих целей.

Хорошая реализация движка? Это сложнее. Что такое хорошая реализация рендерера? ИИ рамки? Системы частиц? В конечном счете, единственный способ определить, есть ли у вас хороший движок, это посмотреть, насколько хорошо он работает в реальной игре . Поэтому, если у вас нет игры, у вас нет возможности оценить ваш движок. И если у вас нет возможности оценить ваш движок, у вас нет возможности судить, действительно ли какой-то код, который вы пишете, действительно полезен.

хорошая реализация рендерера? ИИ рамки? Системы частиц? В конечном счете, единственный способ определить, есть ли у вас хороший движок, это посмотреть, насколько хорошо он работает в реальной игре . Поэтому, если у вас нет игры, у вас нет возможности оценить ваш движок. И если у вас нет возможности оценить ваш движок, у вас нет возможности судить, действительно ли какой-то код, который вы пишете, действительно полезен.

хорошая реализация рендерера? ИИ рамки? Системы частиц? В конечном счете, единственный способ определить, есть ли у вас хороший движок, это посмотреть, насколько хорошо он работает в реальной игре . Поэтому, если у вас нет игры, у вас нет возможности оценить ваш движок. И если у вас нет возможности оценить ваш движок, у вас нет возможности судить, действительно ли какой-то код, который вы пишете, действительно полезен.

Основным преимуществом вытесняющего ядра является то, что системные вызовы не блокируют всю систему. Если sys-вызов длится долго, это не значит, что ядро ​​не может ничего сделать в этот раз. Основным недостатком является то, что это вносит большую сложность в код ядра, поскольку приходится обрабатывать больше конечных случаев, выполнять более точную блокировку или использовать структуры и алгоритмы без блокировки.

65
ответ дан 24 November 2019 в 19:36
поделиться

Вытеснение означает, что ОС поддерживает несколько задач (отдельный фрагмент кода) и будет переключаться между задачами по расписанию. Когда задача прерывается, это называется «вытеснение». Современные ОС поддерживают это - но это не требуется, например, для простых встроенных систем. Затраты на поддержку переключения задач не всегда стоят того.

4
ответ дан 24 November 2019 в 19:36
поделиться

Вы действительно должны использовать термин «вытесняющий». Есть разные виды упреждения. По сути, это очень просто, и вы, вероятно, понимаете это под другим именем. Вытесняющая операционная система может переключать контексты между потоками пользовательского режима без какого-либо специального программирования в вытесненном приложении. Это позволяет многозадачности. Операционная система может переключаться и возвращаться к процессу, и это переключение по существу является прозрачным. Существует также такая вещь, как вытесняющее ядро, который позволяет прерывать потоки режима ядра (большинство операционных систем не допускают этого, но это требуется для определенных приложений, таких как системы реального времени). Обратите внимание, это очень упрощенное объяснение.

15
ответ дан 24 November 2019 в 19:36
поделиться

Другие адекватно объяснили, что такое вытесняемое ядро.

Для чего это нужно?

Преимущества в основном следующие:

  • Меньшая задержка в системах без SMP - обычно используется в системах реального времени или для других вещей, где важна латентность (возможно, аудио, видео приложения)
  • Обучение разработчиков ядра, у которых нет систем SMP, как писать правильный код для SMP

С невыгружаемым ядром на Однопроцессорная система позволяет разработчикам ядра быть ленивыми и обходиться без какой-либо блокировки большую часть времени - конечно, это большой Сбой на SMP. Разрушающиеся ядра позволяют им чувствовать эту боль без большего количества ядер.

7
ответ дан 24 November 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: