Как передать значения вывода одной программы в другую ?

Пользователь

gtrlaren

от gtrlaren, в категории: Python , 3 месяца назад

Всем привет ! Написал модуль который принимает ответ от сервера биржи с котировкой, временем сервера ( частота обновления котировки - 3 раза в секунду ), зацикленный в бесконечность. Вопрос , как передать эти значения в основной скрипт в котором будут обрабатываться эти переменные ( их нужно будет записывать в массив ) . Гуглёж толком не помог ... пробовал multiprocessing и subprocess . Я не жду готового ответа , просто наведите - в какую сторону копать , какие методы использовать лучше ?

Спасибо !

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dmitrypro77 , 3 месяца назад

@gtrlaren Я бы использовал Queue (очередь) и Thread(для обработки в несколько потоков) чтобы легко можно передавать данные между воркером и программой (в Вашем случае котировки или что то еще). Можно также использовать redis-queue или kafka или AWS SQS или любые другие для реализации Queue также. Ниже примерная имплементация на python:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from queue import Queue
from threading import Thread


# Воркер который принимает ответ
def worker():
    while True:
        # Получаем значение
        item = queue.get()
        # Выводим значение
        print(item)
        queue.task_done()


queue = Queue()
# Количество потоков
numberOfThreads = 3
for i in range(numberOfThreads):
    # Запускаем новый поток
    thread = Thread(target=worker)
    thread.daemon = True
    thread.start()

# Данные которые отправляем в worker
# для обработки
for item in [
    "котировка 1",
    "котировка 2",
    "котировка 3",
    "котировка 4",
    "котировка 5",
]:
    # Передаем значение воркеру
    queue.put(item)

# ждем пока все задания закончены
queue.join()


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

Всегда открыт для интересных проектов. Ссылки на мои соц. сети в профиле.

Пользователь

от jorge , 3 месяца назад

@gtrlaren Может иметь смысл сделать новый API точку и потом POST запрос и передавать данные для обновления в основной скрипт?. Как вариант JSON или XML передавать для обновления котировок? Мне кажется это самый простой способ будет заставить комуницировать два скрипта или даже сервера между собой.