0

我正在使用 Python,并且我有一个 C++ 程序的 swig 接口。这个程序是一个科学应用程序,它也处理一个数据库。我们用它来获取和保存数据,但问题是它不支持并行调用。这意味着如果我尝试从 Python 生成不同的线程并从该应用程序调用函数,它将引发异常。

所以我的问题是:有没有办法“强制”一个python模块一次只执行一次函数?

正如我通常所说的,我们会从这个程序中获取一些数据,而不是进行一些数字运算并将新数据保存到程序保存的数据库中。我想到的是以某种方式包装这个模块,使函数一次只运行一个,所以我实际上可以在程序的数字运算部分使用更多线程,而不必担心有两个(或更多)函数该模块同时执行。

4

1 回答 1

2

您正在寻找的是一个lock。如果您使用的是 python threading,您可以简单地使用threading.Lock

在一次只能运行一次的函数中,在进入时获取锁并return在函数结束或结束之前释放它。

于 2013-04-23T17:43:50.170 回答