Я использую ParallelPython для разработки сценария, критичного к производительности. Я хотел бы разделить одно значение между 8 процессами, запущенными в системе. Пожалуйста, извините за тривиальный пример, но это иллюстрирует мой вопрос.
def findMin(listOfElements):
for el in listOfElements:
if el < min:
min = el
import pp
min = 0
myList = range(100000)
job_server = pp.Server()
f1 = job_server.submit(findMin, myList[0:25000])
f2 = job_server.submit(findMin, myList[25000:50000])
f3 = job_server.submit(findMin, myList[50000:75000])
f4 = job_server.submit(findMin, myList[75000:100000])
Документы pp не описывают способ обмена данными между процессами. Возможно ли это?
Если это так, существует ли стандартный механизм блокировки (как в модуле потоков), чтобы подтвердить, что одновременно выполняется только одно обновление?
l = Lock()
if(el < min):
l.acquire
if(el < min):
min = el
l.release
Я понимаю, что мог бы хранить локальные минуты и сравнивать 4 в главном потоке, как только вернул, но, разделяя значение, я мог бы сделать лучшее сокращение моего двоичного дерева BFS и потенциально сохранить много повторений цикла.
1011 * Благодарения и *
Jonathan