Необходимость сортировки через словарь на основе конкретных параметров [дубликат]

Начиная с Flask 1.0 сервер WSGI, включенный с Flask, запускается в поточном режиме по умолчанию.

До версии 1.0 или если вы отключили потоки, сервер запускается в однопоточном режиме и может обрабатывать только один запрос за раз. Любые параллельные запросы должны будут ждать, пока они не будут обработаны, что может привести к проблемам, если вы попытались связаться с вашим собственным сервером из запроса .

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

Обратите внимание, что сервер Flask предназначен только для разработки . Это не готовый к производству сервер. Не полагайтесь на это, чтобы запустить свой сайт в более широкой сети. Вместо этого используйте правильный сервер WSGI, например gunicorn или uWSGI ).

19
задан BigOmega 2 February 2011 в 15:41
поделиться

2 ответа

return final.OrderBy(s => s.PlayOrder).ThenBy(s => s.Name);
38
ответ дан Kris Ivanov 21 August 2018 в 05:34
поделиться
  • 1
  • 2
    Если бы я хотел, чтобы он возвращал список, я мог бы напасть на .ToList () на конец? – BigOmega 2 February 2011 в 15:51
  • 3
    да это верно – Kris Ivanov 2 February 2011 в 15:52
  • 4
    В своем другом комментарии, в котором вы заявляете, что OrderBy выполняет стабильную сортировку, вы описали, что означает стабильный вид. Не могли бы вы также объяснить неустойчивый вид, используя тот же пример? – BigOmega 2 February 2011 в 19:40
  • 5
    она является хорошим объяснением stackoverflow.com/questions/3615100/… – Kris Ivanov 3 February 2011 в 00:44

Если вы хотите продолжить использование метода сортировки, вам нужно будет сделать вашу функцию сравнения более умной:

final.Sort((x, y) => {
    var ret = x.PlayOrder.CompareTo(y.PlayOrder);
    if (ret == 0) ret = x.Name.CompareTo(y.Name);
    return ret;
});

Если вы хотите использовать LINQ, вы можете пойти с тем, что K Ivanov опубликовал.

23
ответ дан tster 21 August 2018 в 05:34
поделиться
  • 1
    Примечание: Sort () "выполняет нестабильную сортировку" в то время как OrderBy "выполняет стабильную сортировку; то есть, если ключи из двух элементов равны, порядок элементов сохраняется & quot; – Kris Ivanov 2 February 2011 в 15:54
  • 2
    Как это работает? Что происходит между фигурными фигурными скобками и как я могу вернуть var? На что он возвращается? Будет ли код внутри фигурных скобок запускаться один или несколько раз? – BigOmega 2 February 2011 в 19:38
  • 3
    Код в фигурных скобках является телом для выражения лямбда, которое совпадает с выражением лямбда, которое вы используете в вопросе. Проблема в том, что для этого мне понадобилось более 1 инструкции, поэтому мне пришлось поместить фигурные скобки вокруг тела. В основном код есть код сравнения, и алгоритм сортировки будет называть его много раз (по порядку: nlogn). – tster 2 February 2011 в 20:11
Другие вопросы по тегам:

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