在PyQt5中使用多进程(multiprocessing)

  • multiprocessing对象要放在__main__所在的启动文件
  • 使用槽连接multiprocessing对象
import sys
from multiprocessing import Pool

from PyQt5.QtWidgets import *


class Window(QWidget):

    def __init__(self):
        super().__init__()
        self.setWindowTitle("hello")
        self.resize(800, 600)
        self.btn = QPushButton('Start')
        self.setup_ui()

    def setup_ui(self):
        layout = QVBoxLayout()
        self.setLayout(layout)
        layout.addWidget(self.btn)


def updater(num):
    print(num)


def main_tracker():
    p = Pool(processes=4)
    p.map(updater, range(0, 100))
    p.close()
    p.join()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    # 建立槽连接
    window.btn.clicked.connect(main_tracker)
    window.show()
    sys.exit(app.exec_())

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyQt5可以与multiprocessing库一起使用来实现并行运行。在PyQt5,可以使用QThreadPool和QRunnable来实现并行运行。QThreadPool是一个线程池,可以管理和调度多个线程。QRunnable是一个可执行的任务,可以在QThreadPool运行。 要在PyQt5使用multiprocessing库,可以按照以下步骤进行操作: 1. 导入multiprocessing库和PyQt5库。 2. 创建一个继承自QRunnable的类,重写run()方法,在run()方法编写需要并行执行的代码。 3. 创建一个QThreadPool对象,并将QRunnable对象添加到线程池。 4. 调用线程池的start()方法来启动并行运行。 下面是一个示例代码,演示了如何在PyQt5使用multiprocessing库实现并行运行: ```python import sys from multiprocessing import Pool from PyQt5.QtWidgets import * class Worker(QRunnable): def __init__(self): super().__init__() def run(self): def updater(num): print(num) p = Pool(processes=4) p.map(updater, range(0, 100)) p.close() p.join() class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("hello") self.resize(800, 600) self.btn = QPushButton('Start') self.setup_ui() def setup_ui(self): layout = QVBoxLayout() self.setLayout(layout) layout.addWidget(self.btn) if __name__ == "__main__": app = QApplication(sys.argv) window = Window() # 创建线程池 threadpool = QThreadPool() def start_worker(): worker = Worker() threadpool.start(worker) # 建立槽连接 window.btn.clicked.connect(start_worker) window.show() sys.exit(app.exec_()) ``` 在这个示例,我们创建了一个Worker类,继承自QRunnable,并重写了run()方法,在run()方法使用multiprocessing库实现了并行运行。然后,在主窗口的按钮点击事件,创建了一个Worker对象,并将其添加到线程池,然后启动线程池来执行并行任务。 请注意,由于multiprocessing使用的是进程而不是线程,因此在PyQt5使用multiprocessing库实现并行运行时,启动时间会比使用线程的方式更长。 #### 引用[.reference_title] - *1* *3* [PyQt5桌面应用开发(3):并行设计](https://blog.csdn.net/withstand/article/details/129332040)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [在PyQt5使用多进程(multiprocessing)](https://blog.csdn.net/sqzhao/article/details/120732579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值