Найти - Пользователи
Полная версия: Обмен данными между скриптами
Начало » Python для новичков » Обмен данными между скриптами
1
prod87
Здравствуйте!
У меня есть несколько скриптов, которые снимают показания с различных устройств. Все эти скрипты работают независимо друг от друга. Я собираюсь написать еще один скрипт, который будет обрабатывать эти данные. Подскажите, какие есть способы обмена данными между этими скриптами? Изначально я задумывал что каждый скрипт будет писать свои данные в свой файл а я управляющим скриптом буду читать их, но у меня есть датчики из которых я читаю порядка 1000 раз в секунду. Я думаю что запись этих данных в файл будет слишком медленная…
4kpt_III
База данных. Если данные слабо связаны, то можно глянуть в сторону redis. Если же связь существенная, тогда нужно смотреть по структуре. Это или PostgreSQL или MongoDB.
prod87
С базой данных, мне кажется, тоже будет медленно…
Нет никакого способа выделить себе место в оперативной памяти и писать/читать их оттуда ?
sander
prod87
мне кажется Ваш подход не верен
думаю, правильным будет переписать скрипты с использованием multiprocessing
4kpt_III
Вы бы сначала ознакомились с тем, что я написал. redis - noSQL база данных, которая полностью висит в памяти. По тестам позволяет реализовать больше 100000 запросов в секунду. Можно еще глянуть hdf, но там по быстродействию я не знаю. Тестов не видел.
sander
prod87
или через сокеты
doza_and
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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB