Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 15, 2015 15:58:10

prod87
Зарегистрирован: 2015-04-15
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Обмен данными между скриптами

Здравствуйте!
У меня есть несколько скриптов, которые снимают показания с различных устройств. Все эти скрипты работают независимо друг от друга. Я собираюсь написать еще один скрипт, который будет обрабатывать эти данные. Подскажите, какие есть способы обмена данными между этими скриптами? Изначально я задумывал что каждый скрипт будет писать свои данные в свой файл а я управляющим скриптом буду читать их, но у меня есть датчики из которых я читаю порядка 1000 раз в секунду. Я думаю что запись этих данных в файл будет слишком медленная…

Офлайн

#2 Апрель 15, 2015 16:11:37

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Обмен данными между скриптами

База данных. Если данные слабо связаны, то можно глянуть в сторону redis. Если же связь существенная, тогда нужно смотреть по структуре. Это или PostgreSQL или MongoDB.

Офлайн

#3 Апрель 15, 2015 17:21:47

prod87
Зарегистрирован: 2015-04-15
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Обмен данными между скриптами

С базой данных, мне кажется, тоже будет медленно…
Нет никакого способа выделить себе место в оперативной памяти и писать/читать их оттуда ?

Офлайн

#4 Апрель 15, 2015 17:28:42

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Обмен данными между скриптами

prod87
мне кажется Ваш подход не верен
думаю, правильным будет переписать скрипты с использованием multiprocessing

Офлайн

#5 Апрель 15, 2015 17:31:55

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Обмен данными между скриптами

Вы бы сначала ознакомились с тем, что я написал. redis - noSQL база данных, которая полностью висит в памяти. По тестам позволяет реализовать больше 100000 запросов в секунду. Можно еще глянуть hdf, но там по быстродействию я не знаю. Тестов не видел.

Офлайн

#6 Апрель 15, 2015 17:33:17

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Обмен данными между скриптами

prod87
или через сокеты

Офлайн

#7 Апрель 15, 2015 23:36:25

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

Обмен данными между скриптами

prod87
Я собираюсь написать еще один скрипт, который будет обрабатывать эти данные
Наверное надо описать этот алгоритм обработки. Сдается мне что наилучший способ обработки импортировать ваши модули в основной скрипт и не забивать себе голову сложным обменом данными.
Основная проблема при этом асинхронная природа приходящих данных. На это есть https://docs.python.org/3/library/asyncio.html
Самый быстрый обмен между процессами - использование shared memory. Но при этом будут трудности с синхронизацией.

Второй подход - пересылка сообщений. Чтобы данные не терялись приходим к очередям задач. В рамках одного процесса https://docs.python.org/2/library/queue.html
Между процессами что-то типа zeromq / rbbitmq / MPI
Если нужно еще и сохранять данные, то как правильно заметили тут надо уже СУБД использовать.

А все вместе со всякими плюшками это называется time series database например https://pypi.python.org/pypi/kairos



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version