Что такое блокирующий и неблокирующий веб-сервер, в чем разница между обоими?

Стандартные словари Python неупорядочены. Даже если вы отсортировали пары (ключ, значение), вы не смогли бы сохранить их в файле dict таким образом, чтобы сохранить порядок.

Самый простой способ - использовать OrderedDict , который запоминает порядок, в котором были вставлены элементы:

In [1]: import collections

In [2]: d = {2:3, 1:89, 4:5, 3:0}

In [3]: od = collections.OrderedDict(sorted(d.items()))

In [4]: od
Out[4]: OrderedDict([(1, 89), (2, 3), (3, 0), (4, 5)])

Не обращайте внимания на то, как напечатан od; он будет работать как ожидалось:

In [11]: od[1]
Out[11]: 89

In [12]: od[3]
Out[12]: 0

In [13]: for k, v in od.iteritems(): print k, v
   ....: 
1 89
2 3
3 0
4 5

Python 3

Для пользователей Python 3 необходимо использовать .items() вместо .iteritems():

In [13]: for k, v in od.items(): print(k, v)
   ....: 
1 89
2 3
3 0
4 5

20
задан vernomcrp 18 December 2009 в 06:28
поделиться

2 ответа

Использование , блокирующий сокет, выполнение будет ждать (т. Е. «Блокировать»), пока не будет выполнена операция полного сокета. Итак, вы можете обрабатывать любые результаты / ответы в своем коде сразу после этого. Они также называются синхронными сокетами.

Операция неблокирующего сокета позволит немедленно возобновить выполнение, и вы можете обработать ответ сервера с помощью обратного вызова или события.

28
ответ дан 29 November 2019 в 22:31
поделиться

Неблокирование обычно означает управляемую событиями, мультиплексирование всей активности через управляемую событиями систему в одном потоке, в отличие от использования нескольких потоков.

4
ответ дан 29 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

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