pyqt中界面初始化的时候使用ProcessPoolExecutor创建一个5任务进程池,在其中的一个button1按钮中往进程池中添加一个任务
时间: 2024-02-21 09:01:08 浏览: 62
你可以使用 `concurrent.futures.ProcessPoolExecutor` 模块来创建进程池,并在 PyQt 中的 `button1` 按钮中往进程池中添加任务函数。下面是一个简单的例子:
```python
import sys
import time
import concurrent.futures
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setGeometry(100, 100, 300, 200)
# 创建进程池,最多同时运行 5 个进程
self.executor = concurrent.futures.ProcessPoolExecutor(max_workers=5)
# 创建一个按钮
button1 = QPushButton("Add Task", self)
button1.move(100, 80)
button1.clicked.connect(self.add_task)
def add_task(self):
# 向进程池中添加任务
self.executor.submit(self.task)
def task(self):
"""进程池中的任务函数"""
print("Task is running...")
time.sleep(5)
print("Task is done!")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们在 `init_ui` 函数中创建了一个最多同时运行 5 个进程的进程池。然后在 `add_task` 函数中,我们使用 `self.executor.submit` 方法向进程池中添加了一个任务函数 `self.task`。最后,我们定义了 `self.task` 函数作为进程池中的任务函数,并在其中添加了一个 5 秒的延时。
当我们运行这个程序时,在界面中点击 `Add Task` 按钮时,程序会在进程池中添加一个任务函数 `self.task`,并在任务函数中添加了一个 5 秒的延时。
阅读全文