Я пишу некоторый фиктивный код, чтобы узнать, как FIFO работают в python (и позже использовать их в моих текущих проектах).Когда я пытаюсь записать или прочитать из него, я получаю сообщение «OSError: получение позиции файла не удалось».
Я пытаюсь передать сложные данные между двумя кодами Python.Я использую FIFO, потому что мне понадобится больше разных каналов для связи между запущенными модулями.Я запускаю их с помощью скрипта bash, который вы можете увидеть ниже.
#first.py
import numpy as np
data = np.complex64([1, 2, 3])
fifo = open("fifoka", "wb")
data.tofile(fifo)
fifo.flush()
fifo.close()
#second.py
import numpy as np
fifo = open("fifoka", "rb")
data = np.fromfile(fifo, dtype=np.complex64)
fifo.close()
print(data)
#!/bin/bash
mkfifo fifoka
python3 first.py | \
python3 second.py
rm fifoka
Если я использую fifo.write(data.tobytes())
вместо data.tofile(fifo)
, то он работает нормально, но согласно spec он должен работать так жеway.
У меня та же проблема, когда я пытаюсь читать с того же fifo, поэтому я думаю, что я делаю ту же ошибку.
Итак, мой вопрос, как мне использовать np.fromfile()
и ndarray.tofile()
правильно в этом случае.