Недостатки вызова перезагрузки Python несколько раз в секунду - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу сделать BTLE-сканирование в окрестностях, для этого у меня есть следующий код

btlescan.py

import btlescan_handler

proc = subprocess.Popen(['sudo', 'stdbuf', '-oL', 'hcitool', 'lescan'], stdout=subprocess.PIPE, shell=False)

for line in iter(proc.stdout.readline,''):
  now    = arrow.now()
  output = line.rstrip()
  try:
    reload(btlescan_handler)
    btlescan_handler.process(now, output, storage)
  except:
    pass

и btlescan_handler.py

def process(now, line, storage):
  try:
    mac = line[:17]
    output = str(int(now.float_timestamp * 1000)) + ' -- ' + now.datetime.strftime('%Y-%m-%d -- %H:%M:%S.%f') + ' -- ' + line
    print output, mac
  except:
    pass

Поскольку BTLE-устройства по своей природе очень болтливы, это приведет к тому, что функцию reload будут вызывать несколько раз в секунду.

Имеется reload, так что я могу изменять функцию process в btlescan_handler в режиме реального времени, вместо того, чтобы постоянно перезапускать скрипт для каждого незначительного изменения.

Я знаю и использую inotify, у меня есть сценарий, который обычно обрабатывает все наблюдения / отмены / перезагрузки сценариев Python при их изменении, но для быстрого и грязного тестирования функциональности process Я просто хочу позвонить reload.

Суть вопроса в том, каковы недостатки этого, помимо увеличения загрузки процессора? Может ли это привести к тому, что сценарий, запущенный с SDHC-карты (Raspberry Pi), увеличит нагрузку на карту, или это просто считывание из кэша в памяти после того, как текстовый редактор сохранил изменения файла?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...