我正在使用Python,我有一个c +程序的swig接口。该程序是一个科学应用程序,也可以处理数据库。我们用它来获取和保存数据,但问题是它不支持并行调用。这意味着如果我尝试从Python生成不同的线程并从该应用程序调用函数,它将抛出异常。
所以我的问题是:有没有办法“强制”python模块一次只执行一次函数?
正如我通常所说的那样,我们会从这个程序中获取一些数据,而不是进行一些数字运算,并将新数据保存到程序所拥有的数据库中。我想到的是包装这个模块的方式,函数一次只运行一个,所以我实际上可以在程序的数字运算部分使用更多线程,而不必担心有两个(或更多)函数该模块同时执行。
答案 0 :(得分:2)
你所期待的是lock。如果您使用的是python的threading
,则只需使用threading.Lock。
在一次只能运行一次的函数中,在进入时获取锁定并在结束return
之前或函数结束时释放它。