Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 3, 2020 14:18:21

twinge
Зарегистрирован: 2020-09-03
Сообщения: 6
Репутация: +  1  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

Доброго времени суток всем!
Есть сегмент кластера в локальной сети = 30 серверным машинам (2x Xeon e5 2697v2 каждая), которые периодически простаивают (основную часто времени работает другая часть кластера).
Вопрос: возможно ли на этих машинах запустить “сервера” python, чтобы “клиент” пользовался их вычислительными ресурсами.

К примеру: в сети есть ноутбук на котором есть некий python код, которому не хватает ресурсов этого самого ноутбука и хочется для вычислений этого кода воспользоваться ресурсами этих самых 30 серверов.

Посоветуйте, пожалуйста куда “копать”.

Спасибо.

P.S.: к серверам есть физический доступ, поставить абсолютно любой софт на эти машины - без проблем!

Офлайн

#2 Сен. 3, 2020 15:43:07

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

Копать в rpyc, pyro5, grpc
ну или любой другой протокол распределенных вычислений. pyro в пятой версии помоему испортился. grpc не пробовал.



Офлайн

#3 Сен. 3, 2020 21:28:54

twinge
Зарегистрирован: 2020-09-03
Сообщения: 6
Репутация: +  1  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

Спасибо!
1)rpyc - более не мэнтэйнится, а по какой причине Вы не знаете? Или автор “всё переписал, всё стабильно, добавить нечего”?

2) в чём испортился pyro5?

Пока смотрю возможности rpyc, вроде всё понятно.

Офлайн

#4 Сен. 4, 2020 08:44:52

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

А почему вы решили что не мейнтейнится?
https://github.com/tomerfiliba-org/rpyc
Последний коммит 25 дней назад. Вполне жив.

no support for unsafe serializers AT ALL (pickle, dill, cloudpickle) - only safe serializers (serpent, marshal, json, msgpack)

Мне нафиг не нужна эта безопасность. Удаление пикл сразу лишает меня возможности использовать аргументы в том формате который мне нужен. Кроме того это очень заметно просаживает производительность.

Кучу всего перелопатили - поломали обратную совместимость. Причем поменяли шило на мыло совершенно ничего существенного не сделано. Где гарантии что дальше не будут опять все ломать?

Я ожидаю от новых версий таких инструментов использования родной асинхронности встроенной в язык. Если учесть что в pyro4 асинхронность была почти в том виде в котором она сейчас в asyncio, то логично было пересмотреть архитектуру с переключением на event_loop от asyncio. Вместо этого люди занимались тем что тасовали модули туда сюда.

p.s.
Это лично мое мнение. Я не спец по таким системам, максимум что я писал сам так это приблуду заменяющую MPI, который нам не подошел для одного из проектов. Может у них и были какие-то мотивы непонятные мне.



Офлайн

#5 Сен. 4, 2020 16:12:58

twinge
Зарегистрирован: 2020-09-03
Сообщения: 6
Репутация: +  1  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

Меня, по большей части, интересуют асинхронные вычисления, но выполнение удалённое через teleport останавливает не только тот поток в котором вызывается, но и код основной программы!

Вот такая штука ждёт 20 секунд и только потом выполняется… Может я чего не так делаю?

 import threading
import rpyc
import time
conn = rpyc.classic.connect("localhost")
def square(x):
	return x**2
def squaredel(x):
	import time
	time.sleep(20)
	print(x**2)
	print("!!!")
	return x**2
def remoteexec(x):
	fn2 = conn.teleport(squaredel)
	return (fn2(x))
x = threading.Thread(target=remoteexec, args=(333,), daemon=True)
x.start()
fn = conn.teleport(square)
print(fn(4))
print(fn(2))
print(fn(1))
x.join()

Офлайн

#6 Сен. 4, 2020 16:44:32

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

> Вопрос: возможно ли на этих машинах запустить “сервера” python, чтобы “клиент” пользовался их вычислительными ресурсами.

Можно, но задачи клиентов должны хорошо распараллеливаться.

> Посоветуйте, пожалуйста куда “копать”.

Для начала прочитай про MapReduce



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Сен. 4, 2020 17:20:18

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

twinge
Может я чего не так делаю?
https://rpyc.readthedocs.io/en/latest/docs/async.html#async



Отредактировано doza_and (Сен. 4, 2020 17:24:01)

Офлайн

#8 Сен. 4, 2020 18:00:18

twinge
Зарегистрирован: 2020-09-03
Сообщения: 6
Репутация: +  1  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

Т.е. код, который надо выполнить асинхронно должен быть оформлен в виде Netref?
Иначе никак?

А почему мой вариант не работает?

Офлайн

#9 Сен. 4, 2020 18:46:46

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

twinge
А почему мой вариант не работает?
Не знаю. Но скорее всего сокет один и он блочится на ожидании ответа.



Офлайн

#10 Сен. 4, 2020 18:48:17

twinge
Зарегистрирован: 2020-09-03
Сообщения: 6
Репутация: +  1  -
Профиль   Отправить e-mail  

Распределённые вычисления в Python

Сокет не один, я пробовал запустить параллельно ещё одну сессию с этим же кодом и сервер инициализировал второй сокет…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version