gpt4 book ai didi

python - Python 中的线程与进程

转载 作者:太空狗 更新时间:2023-10-30 00:36:49 25 4
gpt4 key购买 nike

我将要启动一个使用 Python 的程序,该程序主要进行轮询,它将不断地从串行端口读取(通过 PySerial)并从一个文件描述符中读取,该文件描述符会不时更改时间。我开始研究 threading 模块,但后来我一直在寻找 moremore建议改用 multiprocessing 模块。

我不太精通 Python,主要是 C 背景。 Python 中线程方法的技术优势是什么?

在 C 中,线程共享数据 vs. 必须设置一些 IPC 才能进行通信,这似乎与 Python 相同?

我的用例:

Main process (or thread?) -
start & initialize
|
V
spaw child----------------------> start & initialize
| |
V V
while (1) <------------+ wait for data<------+
| | | |
V | V |
read file descriptors | read from |
| | serial port<-----+ |
V | | | |
value changed? ------No--+ V | |
| ^ message done?--No-+ |
V | | |
Report change------------+ V |
over serial alert parent---------+

所以我在考虑线程,因为它会使通过串行传输的数据共享更容易,并且它们可以共享串行端口的句柄。这是否有意义,或者我是否从 Pythonic 的角度错误地考虑了这一点?

最佳答案

multiprocessing 在 Python 中主要用于避免 GIL(全局解释器锁),GIL 阻止线程用于尝试并行计算 - 对于资源访问,线程是完美的,更好的选择为了便于实现。

GIL意味着只有一个线程可以同时操作任何Python对象。这意味着在您试图加速计算的地方,进程将被其他线程阻碍。在您的用例中,一个线程将只检查新输入,因此这根本不会导致任何问题。

关于python - Python 中的线程与进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com