python - PyQt4 和写入串行是否需要多线程

标签 python multithreading python-2.7 pyqt pyqt4

我的简单 Python 应用程序使用 PyQt4 作为其 GUI,单击 QPushButton 会使应用程序通过 serial 发送消息。 GUI 元素也经常更新。

问题:我不知道如何实现多线程。没有多线程进程是否会导致应用程序在发送串行通信时响应速度较低且一致性较差,尤其是在发送串行消息的同时更新 GUI 元素时?

最佳答案

这要看情况。当您打字时,您的 PC 99.9995% 的时间都处于空闲状态;因此它有大量的 CPU 能力用于后台任务。大多数人不会注意到这一点,因为病毒扫描程序通常会消耗 5-20% 的性能。但键入或单击按钮几乎不会影响 CPU 负载。

OTOH,如果您在 UI 线程中运行较长的任务,则 UI 会锁定,直到任务完成。因此,从用户的角度来看,UI 将是阻塞的,而对于串行端口来说,世界将是好的。总的来说,这会更快,但会感觉缓慢。

由于同步或锁定,多线程通常比在单线程中执行所有操作要慢。但单线程无法扩展。最终,您遇到了障碍(性能方面),没有任何技巧可以使单个线程执行得更快。

关于python - PyQt4 和写入串行是否需要多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18981428/

相关文章:

python - 如何在嵌套函数中捕获当前命名空间?

java - 防止在 Java 中创建/启动线程

python - python 2.7 交换的奇怪行为

linux - 如何使用 python crypt 或 bcrypt 为 useradd 创建加密密码?

python - 有条件地查找 DataFrame 中给定字段 1 的字段 2 中出现的百分比

python - 如何配置 YAPF 以与 Black 相同的方式格式化

Python:将格式字符串转换为正则表达式

python - ffmpeg 子进程问题

python线程: memory model and visibility

Python 和 C/C++ 多线程 : run several threads executing python in the background of C