Python ориентированный на многопотоковое исполнение объектный кэш

Я на самом деле понял, что это частично из ранее прикрепленной ссылки. Похоже, что во всех файлах SQL, которые вызывали ошибку, отсутствовал оператор потока GO в конце файла - это, похоже, требуется после каждой команды EXECUTE, даже в конце файла.

9
задан NeoAnderson 17 October 2008 в 19:05
поделиться

3 ответа

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

Здесь существует список: http://coreygoldberg.blogspot.com/2008/09/python-thread-synchronization-and.html, который мог бы быть полезным.

Хотя атомарная природа тех, которые операция просто означает, что у Вас не будет совершенно непоследовательного состояния, если у Вас будет два потока, получающие доступ к словарю одновременно. Таким образом, у Вас не было бы поврежденного значения. Однако Вы были бы (как с большей частью программирования многопоточности) не смочь полагаться на определенный порядок тех атомарных операций.

Так, короче говоря...

Если Вы имеете довольно простые требования и не к побеспокоенному об упорядочивании того, что записано в кэш затем, можно использовать словарь и знать, что будете всегда получать значение consistent/not-corrupted (это просто могло бы устареть).

Если Вы хотите удостовериться, что вещи немного более последовательны относительно чтения и записи затем, что Вы могли бы хотеть посмотреть на кэш локальной памяти Django:

http://code.djangoproject.com/browser/django/trunk/django/core/cache/backends/locmem.py

Который использует блокировку чтения-записи для блокировки.

8
ответ дан 4 December 2019 в 09:39
поделиться

Поток на запрос часто является плохой идеей. Если Ваш сервер испытает огромные скачки в загрузке, то это возьмет поле к своим коленям. Рассмотрите использование пула потоков, который может вырасти до ограниченного размера во время пикового использования и уменьшения к меньшему размеру, когда загрузка легка.

9
ответ дан 4 December 2019 в 09:39
поделиться

Вы, вероятно, хотите использовать memcached вместо этого. Это очень быстро, очень стабильно, очень популярно, имеет хорошие библиотеки Python и позволит, Вы для роста до распределенного кэша должны Вы нуждаться к:

http://www.danga.com/memcached/

4
ответ дан 4 December 2019 в 09:39
поделиться
Другие вопросы по тегам:

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