self.gate.wait() finally: self.gate.reset() def setCurrentPosition(self, pos): self.currentPosition = pos self.gate.send(None) if __name__ == "__main__": import logging; logging.basicConfig(level = logging.DEBUG) gate = DependsOnCurrentPosition() def t1(): gate.wait(10) print("t1: exit") def t2(): for i in range(10): gate.setCurrentPosition(i) print("t2:", i) eventlet.sleep(1) eventlet.stop_application() def t3(): g1, g2 = eventlet.spawn(t1), eventlet.spawn(t2) g1.wait(), g2.wait() app = QCoreApplication([]) g3 = eventlet.spawn(t3) eventlet.start_application()
import logging; logging.basicConfig(level = logging.DEBUG) from hgoldfish.utils import eventlet from eventlet.green import urllib from PyQt4.QtCore import Qt from PyQt4.QtGui import QApplication, QTextBrowser class TestWidget(QTextBrowser): def __init__(self): QTextBrowser.__init__(self) self.operations = eventlet.GreenletGroup() def mousePressEvent(self, event): if event.button() == Qt.MidButton: self.operations.spawn(self.getpage) QTextBrowser.mousePressEvent(self, event) def getpage(self): page = urllib.urlopen("http://code.google.com/p/eventlet-pyqt/").read().decode("utf-8") self.setHtml(page) app = QApplication([]) w = TestWidget() w.show() eventlet.start_application(quitOnLastWindowClosed = True)
class TestWidget(QTextBrowser): def __init__(self): QTextBrowser.__init__(self) self.operations = eventlet.GreenletGroup() self.setPlainText("click middle button to navigate www.163.com") def mousePressEvent(self, event): if event.button() == Qt.MidButton: self.operations.spawn(self.getpage) self.operations.spawnWithName("print_number", self.printNumbers) QTextBrowser.mousePressEvent(self, event) def printNumbers(self): i = 0 while True: eventlet.sleep(0.1) i += 1 self.append(str(i)) def getpage(self): page = requests.get("http://www.163.com").text self.setPlainText(page) self.operations.kill("print_number") if __name__ == "__main__": app = QApplication([]) w = TestWidget() w.show() eventlet.start_application(quitOnLastWindowClosed=True)
self.gate.reset() def setCurrentPosition(self, pos): self.currentPosition = pos self.gate.send(None) if __name__ == "__main__": import logging logging.basicConfig(level=logging.DEBUG) gate = DependsOnCurrentPosition() def t1(): gate.wait(10) print("t1: exit") def t2(): for i in range(10): gate.setCurrentPosition(i) print("t2:", i) eventlet.sleep(1) eventlet.stop_application() def t3(): g1, g2 = eventlet.spawn(t1), eventlet.spawn(t2) g1.wait(), g2.wait() app = QCoreApplication([]) g3 = eventlet.spawn(t3) eventlet.start_application()