Можно ли передавать данные numpy (с одного python script) в другой?
предположим, что 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? (чтобы я мог, например, выполнить numpy операции с ним изнутри script2.py
)?
Нет, данные передаются по каналу в виде текста. Перед записью вам нужно будет сериализовать данные в script1.py
и десериализировать его в script2.py
после прочтения.
Проверьте функции save
и load
. Я не думаю, что они будут возражать против передачи прототипа вместо файла.
См. этот вопрос.
Если вы хотите использовать модуль subprocess
, вы можете обмениваться памятью между процессами, чтобы быстро передавать массивы numpy. Если нет, я обнаружил, что сохранение в файл удаляет штаны с трубопровода, возможно, потому, что преобразование массива в строку происходит так медленно.
repr
. Заменитеprint x
наprint repr(x)
в script1.py, а затем вызовите скрипт script2.pyeval
для десериализации выходных данных script1.py