LINUX.ORG.RU

Межпроцессное взаимодействие «из коробки» Python

 ,


0

2

Какие сейчас «искоробочные» механизмы взаимодействия процессов есть в Python?

Я пробовал ZMQ тянуть в проект, но не прижился.

Пробовал beanstalkd, слишком медленный.

Какие ещё варианты есть, не жрущие много ресурсов?

Задача - простыми JSON обмениваться.

Ответ на: комментарий от slovazap

А что если нужен какой то сервер который долго запускается. Например большая модель для распознавания голосовых сообщений.

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

theurs ★★
()

Какие ещё варианты есть, не жрущие много ресурсов?

Задача - простыми JSON обмениваться.

Файл в /tmp и не изобретайте фигни на ровном месте

pihter ★★★★★
()

Кажется - то что нужно. можно практически напрямую вызывать функции из серверного скрипта

Конечно, вот простой пример использования Pyro4:

Создайте удаленный объект, который будет доступен для вызова из других процессов или машин:

import Pyro4

@Pyro4.expose
class MyObject:
    def say_hello(self, name):
        return "Hello, {}!".format(name)


Создайте Pyro-сервер и зарегистрируйте объект в сервисе именования:

daemon = Pyro4.Daemon()
uri = daemon.register(MyObject)
ns = Pyro4.locateNS()
ns.register("myobject", uri)
print("Ready.")
daemon.requestLoop()


Теперь вы можете вызвать метод удаленного объекта из другого процесса или машины:

import Pyro4

uri = "PYRO:myobject@localhost:50001"
myobject = Pyro4.Proxy(uri)
print(myobject.say_hello("World")) # выведет "Hello, World!"


Это простой пример, но Pyro4 позволяет делать гораздо более сложные вещи, такие как передача объектов между процессами, использование асинхронных вызовов и многое другое.

theurs ★★
()
Последнее исправление: theurs (всего исправлений: 1)