«Не удалось получить позицию файла» при использовании ndarray.tofile () и numpy.fromfile () с FIFO - PullRequest
1 голос
/ 28 апреля 2019

Я пишу некоторый фиктивный код, чтобы узнать, как 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() правильно в этом случае.

...