Труба NumPy данные в Linux? - PullRequest
1 голос
/ 11 марта 2011

Возможно ли передать данные с нуля (из одного скрипта Python) в другой?

предположим, что script1.py выглядит так:

x = np.zeros(3, dtype={'names':['col1', 'col2'], 'formats':['i4','f4']})

print x

Предположим, что из команды linux я запускаю следующее:

python script1.py | script2.py

Получит ли script2.py данные по трубопроводу в виде ввода (stdin)? Будут ли данные в том же формате NumPy? (так, чтобы я мог, например, выполнить с ним непонятные операции из script2.py)?

Ответы [ 3 ]

3 голосов
/ 11 марта 2011

Проверьте функции save и load. Я не думаю, что они будут возражать против передачи канала вместо файла.

2 голосов
/ 11 марта 2011

Нет, данные передаются через канал в виде текста. Вам нужно будет сериализовать данные в script1.py перед записью и десериализовать их в script2.py после прочтения.

0 голосов
/ 11 марта 2011

См. этот вопрос .

Если вы хотите использовать модуль subprocess, вы можете разделить память между процессами, чтобы быстро передавать массивы. Если нет, я обнаружил, что сохранение в файл превосходит расходы по конвейеру, возможно, потому, что преобразование массива в строку происходит очень медленно.

...