Как сделать так, чтобы после () вызов функции быстрее, чем 1 мс, без зависания других процессов - Tkinter? - PullRequest
0 голосов
/ 08 октября 2019

Я работаю над проектом, в котором я использую несколько процессов, и мне нужен графический интерфейс для чтения входных данных быстрее, чем 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 мс, без зависания всей программы?

1 Ответ

0 голосов
/ 08 октября 2019

Можно ли как-нибудь после того, как () сделать обратный вызов быстрее, чем 1 мс, без зависания всей программы?

Нет, 1 мс - это самая маленькая единица времени, из которой afterможет обработать.

Вместо этого вы можете read_function сделать несколько чтений на каждом временном интервале 1 мс.

Важно знать, что after не гарантирует, что код будет работать при заданном количествевремя. Это только гарантирует, что он не будет вызван до истечения заданного времени.

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