2015-02-06 5 views
2

Я использую Python 2.7 и преобразовываю многопоточный код в многопроцессорный код, чтобы избежать проблем с блокировкой GIL. Тем не менее, я не вижу реализации барьера в модуле многопроцессорности (любые идеи, как реализовать один?).Python 2.7 Многопроцессорный барьер

Я видел этот вопрос: Is it possible to use multiprocessing.Event to implement a synchronization barrier for pool of processes? Но я не уверен, будет ли он работать правильно, потому что он не использует никаких замков!

Спасибо!

ответ

3

Я уверен, что встроенные примитивы синхронизации пакета многопроцессорной обеспечивают то, что вам нужно: https://docs.python.org/2/library/multiprocessing.html#synchronization-primitives

+0

ок спасибо. Я нашел этот код в этом потоке: http://stackoverflow.com/questions/26622745/implementing-barrier-in-python2-7, я надеюсь, что его использование с помощью семафоров из модуля многопроцессорности должно работать нормально. класс Барьер: Защиту __init __ (я, п): self.n = п self.count = 0 self.mutex = Семафор (1) self.barrier = Семафор (0) Защиту ждать (само): self.mutex.acquire() self.count = self.count + 1 self.mutex.release() , если self.count == self.n: self.barrier.release() self.barrier .acquire() self.barrier.release() – masab

Смежные вопросы