Спецификация задачи:Насколько быстро может быть заблокирован() или прокси-сервер, перечисляет проблему?
Я бег несколько сложных задач в питоне и ускорить его, я решил использовать питон MultiProcessing библиотеки. Это сработало очень хорошо, но через некоторое время я начал задаваться вопросом, сколько времени задерживают, я использую, потребляя и сколько процессов блокируют друг друга.
Структура процессов заключается в следующем:
Один процесс, который обновляет общий список между процессами. Код обновления данных что-то вроде этого:
lock.acquire()
list_rex[0] = pat.some_list
list_rex[1] = pat.some_dictionary
lock.release()
где list_rex и замок определяются
list_rex = manager.list([[some_elements], {some_elements}])
lock = multi.Lock()
И тогда есть несколько процессов, которые время от времени обновляет свое собственное пространство памяти с этим списком .The код выглядит следующим образом:
lock.acquire()
some_list = list_rex[0]
some_dict = list_rex[1]
lock.release()
some_list и some_dict каким-то образом связаны, так что я не могу позволить процессам иметь информацию в some_list из различных обновлений, чем в some_dict ,
И мой вопрос:, насколько быстро методы приобретают() и освобождают()? В моем случае их можно вызвать в течение нескольких секунд, а иногда и миллисекунд. И/или есть ли способ избежать использования замков в моем случае?
Спасибо за ваше время.
EDIT: после рассмотрения вашего комментария, мой вопрос, вероятно, должен быть - как списки прокси влияют на мои расчеты? Я использую «some_list» и «some_dict» действительно много, чтобы читать после обновления.
У меня нет надежных ссылок, но я предполагаю, что использование списка прокси-сервера может замедлить вас гораздо больше, чем блокировки. См. [Этот вопрос] (http://stackoverflow.com/q/13121790/1258041) на примере. –
Хмм я об этом не думал. Я думал, что замки - это узкое место. Я сделаю еще несколько исследований. – Jendas
Вы можете использовать модуль [timeit] (http://docs.python.org/2/library/timeit.html) для измерения времени выполнения кода. – Igonato