gpt4 book ai didi

python ,Linux : streaming to and from cmdline

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:04 26 4
gpt4 key购买 nike

我正在尝试使用 gpsd 解码一些非标准 AIS(带有额外信息标记的 nmea 字符串)数据图书馆。 AIS 数据是从一个不断增加的文本文件中读取的(每天一个,换行符是新数据)。一些处理是在 python 中完成的,然后推送到 GPSD 解码器进行解码并返回给 python 进行更多工作。目前,这是使用 os.system 或 subprocess.check_output(它们都花费相同的时间)和命令完成的:

echo "single_nmea_string" | gpsdecode

这可行,但速度非常慢。如果我将所有 NMEA 字符串写入文本文件并进行批量解码,速度会提高 10-50 倍:

cat all_processed_nmea_strings.txt | gpsdecode

但这不能实时工作,因为我需要尽快处理传入的数据。

有没有一种方法可以在 Python 中打开 gpsdecode(或任何其他 cmdline 工具)的管道,在它们准备就绪时将 nmea_strings 发送给它并读取结果,而无需一直启动/停止该工具?我已经在使用带队列的多处理来加速处理,但瓶颈是解码位。

有什么想法吗?

编辑:进一步的测试表明,“缓慢”可能与 cmdline 解码无关。这可能是我在工作人员之间拆分数据的地方。需要做一些分析。

最佳答案

我认为 subprocess.Popen 在你的情况下使用起来有点不方便:你不能使用 communicate() 因为它会等待子进程完成,所以你会必须处理文件描述符并注意不要填充管道缓冲区。参见 this question一些想法。

恕我直言,更好的选择是使用 pexpect package .

关于 python ,Linux : streaming to and from cmdline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42759368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com