Найти - Пользователи
Полная версия: Простенький таймер
Начало » Python для новичков » Простенький таймер
1
mr-x
Привет!

Проблема вроде пустячная, но второй день бьюсь - не могу разобраться. Питон только сел осваивать, ничо не понимаю.

Надо сделать таймаут на некоторый участок кода. В любом букваре есть пример, как это сделать:

 
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
fd = os.open(’/dev/ttyS0’, os.O_RDWR)
signal.alarm(0)
Проблема в том, что под виндой нет сигнала SIGALRM.

Поставил pyQt4. Там есть QtCore.QTimer. Но в силу моей малограмотности не могу разобраться. Вот так таймер работает:

class timer_test ( QtGui.QWidget ) :
def __init__ ( self, parent = None ) :
QtGui.QWidget.__init__ ( self, parent )

self.setWindowTitle ( 'timer_test' )

self.timer = QtCore.QTimer ()
QtCore.QObject.connect ( self.timer, QtCore.SIGNAL("timeout()"), self.print_test )

self.timer.start ( 1000 )

def print_test(self):
self.setWindowTitle ( '!!!!!!!!!!')

app = QtGui.QApplication ( sys.argv )
asd = timer_test ()
asd.show ()
app.exec_ ()
Только мне не надо никаких классов, виджетов. Без них пишет “QObject::startTimer: QTimer can only be used with threads started with QThread”

Подскажите, как победить таймер?
Piton23
mr-x
Надо сделать таймаут на некоторый участок кода.
import time
time.sleep(3)
mr-x
Это же будет просто задержка. Кусок кода, на который требуется натянуть таймаут как висел, так висеть и будет.
sp3
mr-x прочитав несколько раз ваш пост, я так и не понял что\кого вы хотите натянуть.
может это чем нибудь поможет:
import threading

def hello():
print "hello, world"

t = threading.Timer(10.0, hello)
t.start()

while 1:
if raw_input('>>>:') == 'q':
break
mr-x
Хотел, чтобы что-то похожее на пример из учебника работало под виндой. С потоками работает. Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB