【问题标题】:How to listen port parallel in python + linux如何在python + linux中监听端口并行
【发布时间】:2016-12-05 03:17:38
【问题描述】:

大家! 我有一个 python 脚本,它处理来自 COM 端口的输入。

import sys
for string in sys.stdin:
    some_calculation(string)

它是这样运行的:

cat -v /dev/pts/2 | python3 'process.py'

我想让它并行化,例如使用 GNU 并行化。 我的方式是这样的:A|并行B

cat -v /dev/pts/2 | parallel  --pipe --recstart '>' python3 process.py

但它不起作用。

有什么想法吗? 非常感谢。 更新: 我找到了一些解决方案:

cat /dev/pts/2 | parallel -j2 "echo {} | python3 process.py"

Inian 的另一个:

cat -v /dev/pts/2 | parallel --recstart '>' --pipe python3 process.py

【问题讨论】:

    标签: python linux bash python-3.x parallel-processing


    【解决方案1】:

    您可以使用--pipe 选项调用GNU parallel,如下所示:-

    --pipe
            Spread input to jobs on stdin (standard input). Read a block
            of data from stdin (standard input) and give one block of data
            as input to one job.
    

    --pipe 之前使用restart 标志

    cat -v /dev/pts/2 | parallel --recstart '>' --pipe python3 process.py
    

    关于GNU parallel的更多信息。

    【讨论】:

    • 有效!但是出现了一些错误:并行:警告:块中没有匹配完整的记录。增加到 --blocksize 1363150。 --blocksize 1772096 ... --blocksize 14455562 它是什么?谢谢。
    • @user7198142:您必须在命令中明确设置--blocksize。引发警告是因为它不知道要为给定的并行实例读取多少块。通常,如果您将“--blocksize”设置为最大记录大小的至少 2 倍,您将永远不会看到警告。默认块大小为 1MB
    • 谢谢,我会检查它作为答案!我有最后一个问题,请问:我应该设置什么(其他的块大小),如果我想尽快处理数据,输出只是 180 字节的行?数据不断提供。
    • parallel 如果您的输入小于实际可以并行化的数量,则会自动抛出您之前看到的警告。
    • 好的,但它会向任何块大小发出警告。我有来自 COM 端口的连续数据流。
    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2012-09-26
    • 2011-04-08
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多