Я хочу, чтобы моя функция delayed_sum(value, delay)
добавила value
к глобальной переменной result
с определенным delay
в Python 3.x.
Идея состоит в том, чтобы связать мой код Python сЭлектрон должен иметь пользовательский интерфейс. Пользовательский интерфейс позволяет вам просматривать эту глобальную переменную с именем result
и добавлять несколько value
к result
с определенной delay
, выраженной в секундах. Я хотел бы, чтобы переменная result
обновлялась, как только истекла задержка, и пока функция работает в фоновом режиме, все еще можно вызывать функцию.
Если у нас есть время в секундах, какследуйте:
- Инициализация от
result
до 0 и отображение 0 на вызываемом интерфейсе пользователя delayed_sum(5, 10)
. За 10 секунд добавьте 5 к результату - Добавьте 5 за 9 секунд
- Добавьте 5 за 8 секунд
- Добавьте 5 за 7 секунд
- Добавьте 5 в6 секунд
- Добавить 5 за 5 секунд
- Добавить 5 за 4 секунды
- Добавить 5 за 3 секунды и
delayed_sum(3, 5)
вызвано. Через 5 секунд добавьте 3 к результату - Добавьте 5 за 2 секунды, а через 4 секунды добавьте 3
- Добавьте 5 за 1 секунду и через 3 секунды добавьте 3
result += 5
и пользовательский интерфейс отображает 5 и через 2 секунды добавляет 3 - Через 1 секунду добавляет 3
result += 5
, а пользовательский интерфейс отображает 8
Я пытался использовать time.sleep()
, но панель управления зависает, и я не могу позвонить delayed_sum()
во время выполнения первого delayed_sum
.
import time
import threading
result = 0
def delayed_sum(value, delay):
t = threading.Thread(target=perform_sum, args=(value,delay,))
t.start()
def perform_sum(value, delay):
global result
time.sleep(delay)
result += value
Когда я использую код выше, действие действительно выполняется, но значение result
не обновляется в проводнике переменных перед выполнением другой командной строки.
Я до сих пор не использовал Electron, но я боюсь, что если я попрошу свой пользовательский интерфейс прочитатьзначение result
, которое будет отображаться, не будет в реальном времени. Не могли бы вы помочь мне убедиться, что пользовательский интерфейс действительно будет показывать правильное значение result
?
Большое спасибо!