Czas w tle

0

Witam,
kot ma pomysl jak mozna wbudowac czas w ten program zeby byl mierzony w tle. Chodzi mi o to zeby program sie wylaczyl po uplywie 30 sekund. W tym czasie mozemy wybrac opcje1 albo opcje2. Jak mozna to zmnienic zeby w momencie startu programu, czas byl juz mierzony z mozliwoscia wyboru opcji1 albo opcji2 . Obecnie program czeka 30 sekund a pozniej przechodzi do menu. Z gory dziekuje za podpowiedzi.

import time
import subprocess

mierzy czas

mintt=30
timer=int(mintt)
while (timer != 0 ):
timer=timer-1
time.sleep(1)
#print(timer)

print (" --> 1 <-- Opcja1 ")
print (" --> 2 <-- Opcja2 ")
print (" --> 3 <-- Exit")

x = int (raw_input("Wybierz: \n"))

if x == 1:
print ("\n Opcja 1 ")

elif x == 2:
print ("\n Opcja 2")

else:
print ("\n Pa")

1

Może skorzystać z wątków:
https://realpython.com/intro-to-python-threading/

0
import time
from threading import Thread

answer = None

def check():
    time.sleep(2)
    if answer != None:
        return
    print "Too Slow"

Thread(target = check).start()

answer = raw_input("Input something: ")

Przykład wzięty z: https://stackoverflow.com/questions/15528939/python-3-timed-input

Ogólnie bez programowania wątkowego, asynchronicznego bądź jeszcze innego który może wykonywać kilka czynności jednocześnie, to raczej nie jest wykonalne :).

Ten przykład wydaje mi się że jeszcze wymaga trochę doszlifowania, ale pokazuje zasadę działania :D

1

Wątki, selektory, sygnały. signal.alarm jest najprostszym rozwiązaniem. [1]

[1] https://docs.python.org/3/library/signal.html#example

1 użytkowników online, w tym zalogowanych: 0, gości: 1