Я работаю над проектом, в котором я использую несколько процессов, и мне нужен графический интерфейс для чтения входных данных быстрее, чем 1 мс.
Процесс чтения шины --------> Процесс обработки сообщений ------------------> GUI
send msg (5 different processes) send processed msg
(every 2ms) (read faster than 1ms)
Процесс чтения шины читает сообщения с шины каждые 2 мс и отправляет сообщение через канал в конкретное сообщениеПроцесс обработки (есть 5 различных) на основе атрибута прочитанного сообщения. Как только процесс обработки сообщения завершил свои вычисления для своего сообщения, он отправляет вычисленное сообщение через канал в графический интерфейс, который затем отображает содержимое в текстовом поле. Обратите внимание, я не могу увеличить период чтения (не более 2 мс), потому что на шине много сообщений, и я не могу пропустить их.
Графический интерфейс постоянно проверяет сообщения от каждого из5 процессов обработки сообщений при обновлении текстового поля с последним содержанием сообщения. Я пробовал after(1, read_function)
, но это не достаточно быстро. Я знаю, что это слишком медленно, потому что как только я закрываю программу, в канале все еще остается много сообщений, соединяющих каждый из процессов обработки сообщений с графическим интерфейсом.
Я также пытался after(0, read_function)
, но этополностью зависает вся программа, и я не могу нажимать какие-либо кнопки в интерфейсе графического интерфейса.
Можно ли каким-либо образом после () сделать обратный вызов быстрее, чем 1 мс, без зависания всей программы?