python:并发编程(十九)

前言

本文将和大家一起探讨python并发编程的实际项目:win图形界面应用(篇一,共八篇),系列文章将会从零开始构建项目,并逐渐完善项目,最终将项目打造成适用于高并发场景的应用。

本文为python并发编程的第十九篇,上一篇文章地址如下:

python:并发编程(十八)_Lion King的博客-CSDN博客

下一篇文章地址如下:

python:并发编程(二十)_Lion King的博客-CSDN博客

一、技术选型

1、python哪些模块支持win应用?

在Python中,有几个常用的模块可用于设计Windows图形界面应用。以下是其中一些模块的简要介绍:

(1)Tkinter:Tkinter是Python的标准GUI库,提供了创建各种GUI组件的功能,包括窗口、按钮、标签、文本框等。它简单易用,并且适用于多个平台,包括Windows。

(2)PyQt:PyQt是Python的Qt库的绑定,提供了丰富的GUI组件和功能。Qt是一个跨平台的GUI框架,可以用于开发Windows图形界面应用。PyQt使用相对较复杂的API,但它的功能和灵活性非常强大。

(3)wxPython:wxPython是Python的wxWidgets库的绑定,同样也是一个跨平台的GUI框架。它提供了许多用于创建Windows图形界面的组件和工具,包括窗口、按钮、菜单等。

(4)PySide/PySide2:PySide是Python的Qt库的另一个绑定,提供了Qt的GUI功能。它与PyQt类似,但使用的是Qt的LGPL许可证版本。PySide也可以用于创建Windows图形界面应用。

这些模块都有详细的文档和示例代码可供参考。你可以根据自己的需求和偏好选择适合的模块进行GUI应用的设计和开发。同时,还有许多其他的GUI库和工具可供选择,你可以根据实际情况进行评估和决策。

2、支持win应用的模块都有哪些优势?

知道python有哪些模块,那么,我们应该怎么选择则?那得先看看他们的优缺点:

(1)Tkinter:

优势:Tkinter 是 Python 的标准图形界面库,因此无需安装额外的依赖。它简单易用,适合快速开发简单的界面应用。
不足:Tkinter 的默认外观和功能相对较简单,可定制性较低。
(2)PyQt:

优势:PyQt 是基于 Qt 框架的 Python 绑定库,提供了丰富的界面控件和功能,具有良好的可定制性和扩展性。它是一个成熟、稳定且广泛使用的图形界面库。
不足:PyQt 的学习曲线较陡峭,尤其是对于新手来说。此外,PyQt 的商业许可证需要付费,但也有开源版本可供使用。
(3)wxPython:

优势:wxPython 是基于 wxWidgets 的 Python 绑定库,提供了跨平台的图形界面开发解决方案。它具有良好的可移植性、可定制性和丰富的控件库,适用于构建复杂的桌面应用程序。
不足:wxPython 的文档相对较少,对于一些特定的功能和定制需求,可能需要更多的研究和实践。
(4)PySide/PySide2:

优势:PySide(PySide2)也是 Qt 框架的 Python 绑定库,类似于 PyQt。它提供了与 PyQt 相似的功能和特性,包括强大的可定制性和丰富的控件库。与 PyQt 不同的是,PySide 使用 LGPL 开源许可证,因此在某些情况下可能更适合商业应用。
不足:由于历史原因,PySide 和 PySide2 之间存在一些差异和兼容性问题。同时,PySide 的文档和社区支持相对较少。

这些模块都提供了丰富的功能和控件,可以根据项目需求和个人偏好选择合适的模块进行图形界面应用的设计和开发。我司面对的是内部客户,界面要求简单,因此Tkinter满足需求,后续也将基于这个进行分享。

3、多进程、多线程还是多协程?

基于 Tkinter 的并发编程可以采用多线程方式。

Tkinter 库本身是单线程的,意味着它在主线程中处理界面的更新和事件响应。如果在主线程中执行耗时操作,界面会出现卡顿或无响应的情况,影响用户体验。因此,为了保持界面的流畅性和响应性,可以将耗时操作放在后台线程中执行,让主线程专注于界面更新和事件处理。

使用多线程可以使耗时操作在后台线程中并发执行,同时保持主线程的界面响应。线程之间可以通过线程间通信机制(如队列)进行数据交换和同步。例如,可以在一个后台线程中执行耗时的数据处理任务,而主线程则负责更新界面和处理用户交互。

需要注意的是,在多线程编程中需要处理好线程安全性和资源共享的问题,避免出现竞争条件和数据访问冲突。可以使用锁、信号量等线程同步机制来确保线程安全性。

相比而言,多进程和多协程在 Tkinter 应用中的使用场景相对较少。多进程适用于涉及到 CPU 密集型任务的并行计算,而多协程适用于 I/O 密集型任务的并发处理。但由于 Tkinter 库本身的限制,多进程和多协程的使用可能会导致与界面交互和更新相关的问题,因此一般推荐使用多线程来处理并发任务。

二、实现功能

我们的应用将是用于测试协议的工具,比如TCPserver、TCPclient,界面也很简单,就是电脑作为客户端或服务端,可以打开多个tab页,进行协议测试,要求支持多个窗口。

1、界面布局展示

 2、性能要求

支持多个窗口,窗口数量不限,即使如此,上位机崩溃应该取决于系统资源不够,也不应该取决于应用本身。

猜你喜欢

转载自blog.csdn.net/weixin_43431593/article/details/131351741