1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | from functools import wraps import time import signal import errno class TimeoutError(Exception): pass def funcTimeout(timeout=30): def decorator(func): def handleFuncTimeout(signum, frame): raise TimeoutError(os.strerror(errno.ETIME)) @wraps(func) def wrapper(*args, **kwargs): #print '[%d]wrapper START' % id sTime = time.time() signal.signal(signal.SIGALRM, handleFuncTimeout) signal.alarm(timeout) try: result = func(*args, **kwargs) finally: signal.alarm(0) #print '[%d]wrapper END(elapseTime=%d)' % (id, time.time()-sTime) return result return wrapper return decorator #DIRECTIONS @funcTimeout(3) def func(): print 'func() start' time.sleep(5) print 'func() end' func() |
python function timeout decorator
it's function's timeout decorator on python
QT designer와 PySide연동하기
QT designer와 PySide를 연동하여 시그널 매핑까지 하는 샘플코드이다.
ui 파일을 불러와 시그널까지 매핑하는 부분을 참고할 수 있는 사이트가 별로 없어
상당히 많이 헤맸다.
# -*- coding: utf-8 -*-
import sys
from PySide import QtCore
from PySide import QtGui
from PySide import QtUiTools # QT designer의 UI파일을 로드할 수 있게 해주는 라이브러리
class Dialog(QtGui.QDialog):
def __init__(self, parent=None):
super(PosSimDialog, self).__init__(parent)
loader = QtUiTools.QUiLoader();
file = QtCore.QFile("pos.ui")
file.open(QtCore.QFile.ReadOnly)
self.ui = loader.load(file, self)
file.close()
# mapping signal
self.ui.btn_ok.clicked.connect(self.ok) # 디자이너에 btn_ok인 버튼이 클릭시 실행될 메소드를 ok()로 지정한다.
def show(self):
self.ui.show()
self.ui.open()
def ok(self): # btn_ok버튼 클릭시 실행될 코드 부분
pass
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
dlg = Dialog()
dlg.show()
app.exec_()
ui 파일을 불러와 시그널까지 매핑하는 부분을 참고할 수 있는 사이트가 별로 없어
상당히 많이 헤맸다.
# -*- coding: utf-8 -*-
import sys
from PySide import QtCore
from PySide import QtGui
from PySide import QtUiTools # QT designer의 UI파일을 로드할 수 있게 해주는 라이브러리
def __init__(self, parent=None):
super(PosSimDialog, self).__init__(parent)
loader = QtUiTools.QUiLoader();
file = QtCore.QFile("pos.ui")
file.open(QtCore.QFile.ReadOnly)
self.ui = loader.load(file, self)
file.close()
# mapping signal
self.ui.btn_ok.clicked.connect(self.ok) # 디자이너에 btn_ok인 버튼이 클릭시 실행될 메소드를 ok()로 지정한다.
def show(self):
self.ui.show()
self.ui.open()
def ok(self): # btn_ok버튼 클릭시 실행될 코드 부분
pass
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
dlg = Dialog()
dlg.show()
app.exec_()
피드 구독하기:
글 (Atom)