2016-08-25 3 views
1

私の問題は次のとおりです。APSchedulerライブラリを使用して、アプリケーションにスケジュールされたジョブを追加しています。同じコードを同時に実行する複数のジョブがありますが、パラメータは異なります。この問題は、これらのジョブが同時に同じメソッドにアクセスしてプログラムが正しく動作しなくなった場合に発生します。Pythonでのメソッドのロック?

Python 3.4でメソッドをロックする方法があるかどうかを知りたいので、一度に1つのスレッドだけがアクセスできますか?もしそうなら、簡単なサンプルコードを投稿していただけますか?ありがとう。

from threading import Lock 
lock = Lock() 
... 

def foo(): 
    lock.acquire() 
    try: 
     # only one thread can execute code there 
    finally: 
     lock.release() #release lock 

またはコンテキストの経営管理論と:あなたは、基本的なPythonのロック機構を使用することができます

答えて

2

詳細については

def foo(): 
    with lock: 
     # only one thread can execute code there 

Python 3 Lock ObjectsThread Synchronization Mechanisms in Pythonを参照してください。

+0

ロックはコンテキスト管理プロトコルをサポートしているため、通常は明示的なメソッド呼び出しの代わりにその使用法を宣伝する必要があります。 –

+0

ありがとう、これは私の問題を解決した – DanijelT

関連する問題