Dmti
в учебнике написано: Note that data in a pipe may become corrupted if two processes (or threads) try to read from or write to the same end of the pipe at the same time. А такие моменты при асинхронном обращении будут возникать постоянно. Вопрос что делать и как быть?
Я ж не знаю чего там у вас понагорожено, что там за асихронность у вас и исхожу только из вашего“прототипа”. В вашем “прототипе”только один подпроцесс. он пишет в один конец, а основной процесс только читает с другого. Никаких осложнений быть не должно. Вот если у вас два процесса будут писать или читать в один конец, тогда да, у вас будут проблемы. НО повторюсь, из “протипа” это никак не следует.
Dmti
Цикл так и не запускается в терминал выводится что процесс запущен и тишина
все запускаеться, но вопервых чтобы увидеть ('—– УРРАААААААаааа—–') нужно запускать в консоли, а не в IDE
во вторых не нужно закрывать конец трубы, оно само потом не откроется. ЗАкрывать имеет смысл если никаких данных больше не будет посылаться, например перед завершением потока(хотя оно должно автоматически вызваться когда соединение будет уничтожено сборщиком мусора). или если хотите однонаправленую связь организоватью, чтобы ненароком не положить не в туот конец.
from multiprocessing import Process, Pipe
#
def ReadMpu(conn):
while True:
print('----- УРРАААААААаааа-----')
gyr = [1.0,2.0,3.0,4.0,5.0]
conn.send(gyr)
#
if __name__ == '__main__':
gyro = [1,1,1,1,1]
first_conn, second_conn = Pipe()
#
pid = Process(target = ReadMpu,
args = [second_conn,])
pid.start()
print(pid)
#
while True:
if first_conn.poll(0.5):
gyro = first_conn.recv()
print(gyro)
>>>
----- УРРАААААААаааа-----
----- УРРАААААААаааа-----
----- УРРАААААААаааа-----
[1.0, 2.0, 3.0, 4.0, 5.0]
----- УРРАААААААаааа-----
[1.0, 2.0, 3.0, 4.0, 5.0]
----- УРРАААААААаааа-----
[1.0, 2.0, 3.0, 4.0, 5.0]
----- УРРАААААААаааа-----
[1.0, 2.0, 3.0, 4.0, 5.0]
----- УРРАААААААаааа-----
[1.0, 2.0, 3.0, 4.0, 5.0]
----- УРРАААААААаааа-----
[1.0, 2.0, 3.0, 4.0, 5.0]
[1.0, 2.0, 3.0, 4.0, 5.0]
----- УРРАААААААаааа-----
[1.0, 2.0, 3.0, 4.0, 5.0]
[1.0, 2.0, 3.0, 4.0, 5.0]
.....
>>>