YardalGedal
@YardalGedal
yeah boy

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

Возникла такая идея:
У нас есть основной процесс программы, создаётся дочерний -- в материнском процессе бесконечный цикл который отправляет какие-то данные дочернему не дожидаясь ответа. Как это правильно реализовать? В какую сторону смотреть?
Я пробовал это реализовать через Popen и PIPE ( в качестве stdin и stdout ) и посылать туда запросы через Popen.communicate, но это не сработало, увы, так как communicate ожидает завершения и выводит результат, чего мне не нужно.

P.S. Увы, в многопоточности я не так хорош, как в подборе тегов для вопроса, поэтому не обессудьте.

UPD1
Надумал что-то такое:
main.py
import subprocess
p = subprocess.Popen(['python', 'test1.py'], stdin=subprocess.PIPE)
p.stdin.write(bytes('test1', 'UTF-8'))


test1.py
import sys
f = open('f.txt', 'w+')
f.write(sys.stdin.read()) # f.write(str(sys.stdin.read(), 'UTF-8')) тоже не работает
f.close()


Но это не работает, что не удивительно. Файл всегда пуст.
  • Вопрос задан
  • 328 просмотров
Решения вопроса 1
YardalGedal
@YardalGedal Автор вопроса
yeah boy
В общем я решил отказаться от этой идеи и использовал сокеты.
client.py получает данные, обрабатывает и отправляет через сокет, server.py все это время слушает канал.

UPD 11.08.2017
А ещё лучше, как оказалось, использовать multiprocessing.Manager
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы