嵌入Python线程安全

1 投票
2 回答
1000 浏览
提问于 2025-04-16 05:32

我正在尝试在一个分析车辆总线系统的软件模块中使用Python。为了做到这一点,我需要以线程安全的方式嵌入Python,因为可能会有多个模块实例独立工作。我可以使用互斥锁来保护对Python的所有访问,并为每个线程创建一个独特的(Python)模块。显然,这种方法是最简单的,但代价是无法在多个核心上扩展。或者,我可以修改我的模块,生成新的进程,这些进程内部使用Python,并通过共享内存与它们连接。这种方法虽然会影响性能,实施起来也需要更多时间,但扩展性很好。

我的问题是:你觉得哪种方法更合理?有没有其他方法可以安全地嵌入Python,或者以一种可以在多个核心上扩展的方式?

此致,Moritz

补充:我使用的是CPython

2 个回答

3

如果你的程序主要是受限于CPU的性能,那么在Python中,要想利用多个核心,你只能使用多进程库(multiprocessing)。不过,如果你的程序主要是受限于输入输出(I/O),那么使用线程(threading)就通常够用了。

如果你想让线程之间的安全性更简单,那就可以使用队列(Queue)来处理所有的信息传递。

0

关于我之前的问题,我继续进行了尝试,使用了进程(Processes)和Python的内部功能。关于为什么多进程库有时候不管用的一个不错的解释可以在这里找到:http://pkaudio.blogspot.com/2010/04/whey-multiprocessing-doesnt-always-work.html。这篇文章不是我写的,但那位作者遇到的问题和我一样。我很感谢所有试图帮助我的人。

撰写回答