2013-04-23 67 views
0

我正在使用Python,并且我有一个用于C++程序的swig接口。这个程序是一个科学应用程序,也处理数据库。我们用它来获取和保存数据,但问题是它不支持并行调用。这意味着如果我尝试从Python产生不同的线程并从这个应用程序中调用函数,它会抛出异常。强制模块一次只能运行一个函数

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

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

回答

2

你在看什么是lock。如果你正在使用python的threading,你可以简单地使用threading.Lock

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