나는이 같은 파이썬 3 시퀀스를 사용하고 시간 초과 효과를 얻는 방법을 알지 못합니다.파이썬 잠금 문 및 시간 제한
당신은 컨텍스트 매니저로 아주 쉽게 수행 할 수 있습니다
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
인수가 아니기 때문에이 파이썬 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. DB2 잠금 제한 시간
- 2. GCD의 시간 제한 잠금 장치입니까?
- 3. 잠금 제한 시간 제한 독점 SQLite3 데이터베이스
- 4. innodb 잠금 대기 제한 시간
- 5. 파이썬 트위스트 에이전트 제한 시간
- 6. PHP 세션 잠금 대기 제한 시간
- 7. __SysObjects의 SQL Compact 잠금 시간 제한
- 8. 화면 잠금 후 대기 시간 제한 감소
- 9. 블랙 베리 키보드 잠금 제한 시간
- 10. mysql 잠금 대기 제한 시간 초과 오류
- 11. Python 잠금 : 시간 제한 작업을 잠금 또는 조건부 변수에 넣어야합니까?
- 12. 파이썬 httplib.HTTPSConnection 시간 제한 응답
- 13. 파이썬 : 제어 시간 제한 길이
- 14. 문자열 파이썬 os.system을 제한 시간
- 15. 파이썬, % 및 mysql 문
- 16. 파이썬 및 문
- 17. epoll 및 제한 시간
- 18. 오라클 및 TSQL 문 아니요 잠금
- 19. 휘발성 키워드 및 잠금 문 사용
- 20. 잠금 문 포화
- 21. UploadOperation 제한 시간 제한
- 22. 피 파이썬 CGI 브라우저 시간 제한
- 23. 파이썬 클라이언트 요청은 기본 시간 제한
- 24. 파이썬 App Engine은 배포되지 않습니다 - 시간 제한
- 25. Rapidshare와 같은 제한 시간 및 대기 시간
- 26. 설정 최소 시간 및 시간 제한
- 27. 파이썬, 응답 및 if 문
- 28. 파이썬 재귀 및 return 문
- 29. 슬라이싱 및 if 문 (파이썬)
- 30. 교착 상태 - "잠금 대기 제한 시간 초과, 거래 다시 시작하십시오"
그렇게 할 수없는 것처럼 보입니다. – Blender
[this] (http://stackoverflow.com/questions/8392640/how-to-implement-a-lock-with-a-timeout-in-python-2-7) 도움이 될 수도 있습니다. – shx2
내가 원하는 ;-). – Tsf