Python subprocess.run работает слишком долгоPython

Программы на Python
Ответить
Anonymous
 Python subprocess.run работает слишком долго

Сообщение Anonymous »

Следующий код является частью гораздо более крупного проекта, но это все, что нужно показать, чтобы проиллюстрировать мою проблему.
Я использую subprocess.run для выполнения программы C, которая обрабатывает волновой файл. Проблема в том, что subprocess.run не возвращается из своего выполнения до тех пор, пока модуль C не завершит свое выполнение. Как видно из сопровождающего вывода, время до запуска subprocess.run составляет 24,3 секунды. Время до возврата из модуля C составляет 25 секунд. Время после возврата subprocess.run составляет 36,9 секунды. Учитывая примерно 1 секунду выполнения модуля C, время до возврата из subprocess.run составляет 11,5 секунд. Это происходит независимо от любого другого кода, который я запускаю в более крупном проекте.
Что делает subprocess.run в течение 11,5 секунд и как мне избавиться от этой задержки?
#!/usr/bin/env python3

import time
import subprocess
from datetime import datetime

cmd_args = ['/home/wa4ywm/gr-ft8_rxtx/KGOBA/ft8_lib-master/decode_ft8', '/home/wa4ywm/gr-ft8_rxtx/python/FT8_wavefile.wav']

now = float(datetime.now().strftime('%S.%f'))
print ("Before ft8_decode = ", now)

ft8_decode = subprocess.run(cmd_args, capture_output=True)
ft8_decode = ft8_decode.stdout.decode('utf-8')
print("\n" + ft8_decode)

now = float(datetime.now().strftime('%S.%f'))
print ("After ft8_decode = ", now)

Вот результат, показывающий время:
wa4ywm@raspberrypi:~/gr-ft8_rxtx/python $ python3 test.py
Before ft8_decode = 24.282739

Time before return = Sun Jan 19 13:52:25 2025

After ft8_decode = 36.900071


Подробнее здесь: https://stackoverflow.com/questions/793 ... r-too-long
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»