PyQt实现的生产者消费者模型

来源:互联网 发布:最好的网络借贷平台 编辑:程序博客网 时间:2024/05/20 11:26
from PyQt5.QtCore import QCoreApplication, QMutex, QThread, QWaitConditionDataSize = 1000000BufferSize = 8192buffer = ['0' for x in range(BufferSize)]bufferNotEmpty = QWaitCondition()bufferNotFull = QWaitCondition()mutex = QMutex()numUsedBytes = 0class Producer(QThread):    def __init__(self):        super().__init__()    def run(self):        global numUsedBytes        for i in range(DataSize):            mutex.lock()            if numUsedBytes == BufferSize:                bufferNotFull.wait(mutex)            mutex.unlock()            print("produce ", i)            buffer[i % BufferSize] = i            mutex.lock()            numUsedBytes += 1            bufferNotEmpty.wakeAll()            mutex.unlock()class Consumer(QThread):    def __init__(self):        super().__init__()    def run(self):        global numUsedBytes        for i in range(DataSize):            mutex.lock()            if numUsedBytes == 0:                bufferNotEmpty.wait(mutex)            mutex.unlock()            print(buffer[i % BufferSize])            mutex.lock()            numUsedBytes -= 1            bufferNotFull.wakeAll()            mutex.unlock()if __name__ == '__main__':    import sys    app = QCoreApplication(sys.argv)    producer = Producer()    consumer = Consumer()    producer.start()    consumer.start()    producer.wait()    consumer.wait()    print("hello, finished")    sys.exit(app.exec_())

0 0
原创粉丝点击