2013-04-23 65 views
0

我正在使用Python,並且我有一個用於C++程序的swig接口。這個程序是一個科學應用程序,也處理數據庫。我們用它來獲取和保存數據,但問題是它不支持並行調用。這意味着如果我嘗試從Python產生不同的線程並從這個應用程序中調用函數,它會拋出異常。強制模塊一次只能運行一個函數

所以我的問題是:有沒有辦法「強制」一個python模塊一次只能執行一次函數?

正如我所說的,通常我們會從這個程序中獲取一些數據,比做一些數字處理並將新數據保存到程序所保存的數據庫中。我想到的是以某種方式封裝這個模塊,這些函數一次只能運行一個,所以我實際上可以在程序的數字運算部分使用更多的線程,而不必擔心有兩個(或更多)函數該模塊正在同時執行。

回答

2

你在看什麼是lock。如果你正在使用python的threading,你可以簡單地使用threading.Lock

在一次只能運行一次的函數中,在進入時獲取鎖並在結束return或函數結束之前將其釋放。