böyle bir Python 3 dizisini kullanıyorum Zaman aşımı etkisini nasıl alacağımı bilmiyorum.piton kilit With deyimi ve zaman aşımı
Bir bağlam yöneticisi ile oldukça kolayca yapabilirsiniz
5
A
cevap
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 ...
* Not: Lock.acquire
1
bir
timeout
argüman olmadığından bu Python 2.x çalışmaz
Biraz daha güzel versiyon:
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 ...
O kadar, sen threading.Lock
alt sınıf olamaz belirir Bunun yerine bir sarmalayıcı sınıf yapmak zorunda kaldım.
+0
Güzel! Yapmaya çalışacağım. Thnx. – Tsf
İlgili konular
- 1. üyelik zaman aşımı ve oturum zaman aşımı
- 2. Büyük MySql tablosundan tek satırdaki "kilit zaman aşımı" sonuçlarının silinmesi
- 3. Faraday'da "zaman aşımı" ve "açık zaman aşımı" nedir?
- 4. Zaman aşımı ve açık zaman aşımı arasındaki fark nedir?
- 5. Geopy hatası ve zaman aşımı
- 6. Python soket bağlantı zaman aşımı
- 7. Bağlantı Zaman Aşımı
- 8. WebSocket Bağlantı zaman aşımı
- 9. grpc zaman aşımı
- 10. Semaphore Zaman Aşımı Süresi
- 11. mod_rewrite proxy zaman aşımı
- 12. SSH Bağlantı Zaman Aşımı
- 13. DatagramSocket zaman aşımı ekleme -) (
- 14. HttpWebRequest zaman aşımı
- 15. TestNG'de zaman aşımı testi
- 16. RPC zaman aşımı - Cassandra
- 17. setInterval tam zaman aşımı
- 18. Uygulama C# zaman aşımı
- 19. phantomJS webpage zaman aşımı
- 20. WCF Zaman aşımı sorunu?
- 21. Geopy: zaman aşımı hatası yakala
- 22. cancellationtoken timeout vs task.delay() ve zaman aşımı
- 23. MongoDB: Bağlantı havuzu ve zaman aşımı nedir?
- 24. Zaman aşımı hatası yakalama ve jqGrid'de gösterme
- 25. Erlang yuvası ve alma zaman aşımı
- 26. WaitGroup.Wait() için zaman aşımı
- 27. BackgroundWorker için zaman aşımı
- 28. NSURLConnection zaman aşımı?
- 29. Android Ekran Zaman aşımı
- 30. zaman aşımı stringwithcontentsofurl
Bunu yapabileceğiniz gibi görünmüyor. – Blender
[this] (http://stackoverflow.com/questions/8392640/how-to-implement-a-lock-with-a-timeout-in-python-2-7) yardımcı olabilir – shx2
Ne gibi görünmüyor İstiyorum ;-). – Tsf