私はこのようなPythonの3シーケンスを使用していますタイムアウト効果を得る方法を知っていません。のpythonロックと文とタイムアウト
あなたはコンテキストマネージャとかなり簡単にこれを行うことができます
5
A
答えて
5
:
import threading
from contextlib import contextmanager
@contextmanager
def acquire_timeout(lock, timeout):
result = lock.acquire(timeout=timeout)
yield result
if result:
lock.release()
# Usage:
lock = threading.Lock()
with acquire_timeout(lock, 2) as acquired:
if acquired:
print('got the lock')
# do something ....
else:
print('timeout: lock not available')
# do something else ...
* 注:Lock.acquire
1
へ
timeout
引数がないので、これは、Python 2.xで動作しません。
少しよりよいバージョン:
import threading
from contextlib import contextmanager
class TimeoutLock(object):
def __init__(self):
self._lock = threading.Lock()
def acquire(self, blocking=True, timeout=-1):
return self._lock.acquire(blocking, timeout)
@contextmanager
def acquire_timeout(self, timeout):
result = self._lock.acquire(timeout=timeout)
yield result
if result:
self._lock.release()
def release(self):
self._lock.release()
# Usage:
lock = TimeoutLock()
with lock.acquire_timeout(3) as result:
if result:
print('got the lock')
# do something ....
else:
print('timeout: lock not available')
# do something else ...
あなたがそう、threading.Lock
をサブクラス化することはできません表示されます代わりにラッパークラスを作る必要がありました。
+0
ニース!試してみます。 Thnx。 – Tsf
関連する問題
- 1. サービスファブリックのロックとタイムアウト
- 2. ActiveRecordの「MySQLの::エラー:超過ロック待機タイムアウト」明白なロックと
- 3. ロック・タイムアウトArangoDB
- 4. コマンドと悲観的なロックのNhibernate設定クエリのタイムアウト時間
- 5. のpythonのタイムアウトとsubprocess32、OverflowErrorを
- 6. Vertica DB throwing Unavailable:クエリのイニシエータロック - ロック失敗:タイムアウトXロック
- 7. VBAのロックとロック解除
- 8. Pythonのウェブスクレイピング:睡眠と要求との間の差(ページ、タイムアウト= X)
- 9. ロック待機タイムアウトを処理するフック
- 10. Pythonタイムアウト
- 11. 画面ロックとロック解除
- 12. Pythonコルーチンのタイムアウト
- 13. Pythonマルチプロセッシングプールのタイムアウト
- 14. Androidのライフサイクルとロック/ロック解除のデバイス
- 15. WM6.1上のC++ロックtabskbarとwindowsロックも
- 16. pythonロックの誤解
- 17. Pythonのurllib2のタイムアウト
- 18. dotNetのロックとマルチスレッド
- 19. Pythonとif文
- 20. マージしようとしたときにテーブルをロックしようとしてタイムアウトしました
- 21. AVAudioPlayer、オーディオセッションカテゴリとロック
- 22. INNER JOINとロック
- 23. Python - TKinter "タイムアウト"
- 24. プライムフェイスファイルアップロードとセッションのタイムアウト
- 25. Rubyのタイムアウトとスリーピングスレッド
- 26. マイクロサービスのタイムアウトとトランザクション
- 27. データベースアクセスのロックとロック解除 - データベースがロックされています
- 28. 「フォームのタイムアウト」との違い何、「メンバーシップ・userIsOnlineTimeWindow」と「てsessionStateタイムアウト」
- 29. PythonスクリプトでClearCaseのラベルをロックしようとすると構文エラーが発生する
- 30. ストアドプロシージャとSqlCommandタイムアウト
あなたがそうすることはできません。 – Blender
[this](http://stackoverflow.com/questions/8392640/how-to-implement-a-lock-with-a-timeout-in-python-2-7)助けてくれるかもしれない – shx2
が欲しいです ;-)。 – Tsf