У меня есть приложение для сканирования портов, которое использует рабочие очереди и потоки.
Он использует простые TCP-соединения и тратит много времени на ожидание возврата пакетов (до полсекунды). Таким образом, потоки не должны полностью выполняться (то есть первая половина отправляет пакет, переключает контекст, делает вещи, возвращается в поток, в котором его ожидают сетевые данные).
Я подозреваю, что могу улучшить производительность, изменив sys.setcheckinterval
по умолчанию на 100 (что позволяет выполнять до 100 байт-кодов перед переключением на другой поток).
Но, не зная, сколько байт-кодов фактически выполняется в потоке или функции, я слетаю вслепую, и простое угадывание значений, тестирование и опора на тестирование показывают измеримую разницу (что трудно, так как объем выполняемого кода минимален ; простое сокетное соединение, поэтому дрожание сети, скорее всего, повлияет на любые измерения больше, чем изменение sys.setcheckinterval).
Таким образом, я хотел бы выяснить, сколько байт-кодов содержится в определенных выполнениях кода (т. Е. Всего для функции или в выполнении потока), чтобы я мог сделать более интеллектуальные предположения о том, как установить sys.setcheckinterval.