Если вы хотите выполнять какие-либо две вещи параллельно, независимо от других, вам следует рассмотреть возможность использования multiprocessing
. Однако, даже если вы это сделаете, вашему l oop все равно нужно будет проверить, был ли зарегистрирован ключ в другом процессе, или вам необходимо принудительно завершить процесс, выполняющий l oop, что может привести к неожиданным результатам. .
Однако в вашем случае, поскольку нет побочных эффектов, таких как записываемые файлы, это будет работать:
import time
import keyboard
from multiprocessing import Process
def print_loop():
m = 2
s = 0
count_down = True
while True:
print(f"{m} minutes, {s} seconds")
if count_down:
if s == 0:
m -= 1
s = 60
s -= 1
elif not count_down:
s += 1
if s == 60:
m += 1
s = 0
if m == 0 and s == 0:
count_down = False
time.sleep(1)
def main():
p = Process(target=print_loop)
p.start()
# this loop runs truly in parallel with the print loop, constantly checking
while True:
if keyboard.is_pressed('q'):
break
# force the print loop to stop immediately, without finishing the current iteration
p.kill()
if __name__ == '__main__':
main()