python通过五个按钮每个按钮按一次开启线程池之中的子线程
时间: 2024-10-23 19:03:51 浏览: 18
在Python中,如果你想通过五个按钮来控制线程池中子线程的启动,通常需要结合GUI库如Tkinter来实现。以下是一个基本的例子,假设我们有一个窗口,上面有五个Button,每个Button代表一个任务,点击后触发相应的线程:
```python
import tkinter as tk
from threading import Thread
from concurrent.futures import ThreadPoolExecutor
def button_click(index):
def run_task():
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
executor.submit(task_list[index])()
thread = Thread(target=run_task)
thread.start()
task_list = [lambda: print("Task 1"), lambda: print("Task 2"),
lambda: print("Task 3"), lambda: print("Task 4"),
lambda: print("Task 5")]
root = tk.Tk()
for i in range(5):
button = tk.Button(root, text=f"Button {i+1}", command=lambda x=i: button_click(x))
button.pack()
root.mainloop()
```
在这个例子中,我们创建了五个Button,当用户点击某个按钮时,会触发对应的匿名函数(lambda表达式),这个匿名函数内部又调用了`button_click`函数,传入按钮的索引。`button_click`会启动一个新的线程,该线程执行`task_list`列表中对应位置的任务。
请注意,这只是一个基本示例,实际应用中你需要确保线程安全,特别是如果按钮操作会影响全局状态或者资源的话。
阅读全文