- class QDeadlineTimer#
The
QDeadlineTimer
class marks a deadline in the future. More…Synopsis#
Methods#
def
__init__()
def
deadline()
def
deadlineNSecs()
def
hasExpired()
def
isForever()
def
__ne__()
def
__add__()
def
__iadd__()
def
__sub__()
def
__isub__()
def
__lt__()
def
__le__()
def
__eq__()
def
__gt__()
def
__ge__()
def
remainingTime()
def
setDeadline()
def
setTimerType()
def
swap()
def
timerType()
Static functions#
def
addNSecs()
def
current()
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description#
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
The
QDeadlineTimer
class is usually used to calculate future deadlines and verify whether the deadline has expired.QDeadlineTimer
can also be used for deadlines without expiration (“forever”). It forms a counterpart toQElapsedTimer
, which calculates how much time has elapsed sincestart()
was called.QDeadlineTimer
provides a more convenient API compared tohasExpired()
.The typical use-case for the class is to create a
QDeadlineTimer
before the operation in question is started, and then useremainingTime()
orhasExpired()
to determine whether to continue trying the operation.QDeadlineTimer
objects can be passed to functions being called to execute this operation so they know how long to still operate.def executeOperation(msecs): deadline = QDeadlineTimer(msecs) do { if readFromDevice(deadline.remainingTime()): break waitForReadyRead(deadline) } while (not deadline.hasExpired())
Many
QDeadlineTimer
functions deal with time out values, which all are measured in milliseconds. There are two special values, the same as many other Qt functions namedwaitFor
or similar:0: no time left, expired
-1: infinite time left, timer never expires
Reference Clocks#
QDeadlineTimer
will use the same clock asQElapsedTimer
(seeclockType()
andisMonotonic()
).Timer types#
Like
QTimer
,QDeadlineTimer
can select among different levels of coarseness on the timers. You can select precise timing by passingPreciseTimer
to the functions that set of change the timer, or you can select coarse timing by passingCoarseTimer
.VeryCoarseTimer
is currently interpreted the same way asCoarseTimer
.This feature is dependent on support from the operating system: if the OS does not support a coarse timer functionality, then
QDeadlineTimer
will behave likePreciseTimer
was passed.QDeadlineTimer
defaults toCoarseTimer
because on operating systems that do support coarse timing, making timing calls to that clock source is often much more efficient. The level of coarseness depends on the operating system, but should be in the order of a couple of milliseconds.`` std::chrono``
Compatibility#
QDeadlineTimer
is compatible with thestd::chrono
API from C++11 and can be constructed from or compared to bothstd::chrono::duration
andstd::chrono::time_point
objects. In addition, it is fully compatible with the time literals from C++14, which allow one to write code as:namespace = using() namespace = using() deadline = QDeadlineTimer(30s) device.waitForReadyRead(deadline) if deadline.remainingTime<nanoseconds>() > 300ms: cleanup()
As can be seen in the example above,
QDeadlineTimer
offers a templated version ofremainingTime()
anddeadline()
that can be used to returnstd::chrono
objects.Note that comparing to
time_point
is not as efficient as comparing toduration
, sinceQDeadlineTimer
may need to convert from its own internal clock source to the clock source used by thetime_point
object. Also note that, due to this conversion, the deadlines will not be precise, so the following code is not expected to compare equally:namespace = using() namespace = using() now = steady_clock::now() deadline = QDeadlineTimer(now + 1s) Q_ASSERT(deadline == now + 1s)
See also
- class ForeverConstant#
Constant
Description
QDeadlineTimer.ForeverConstant.Forever
Used when creating a
QDeadlineTimer
to indicate the deadline should not expire
- PySide6.QtCore.QDeadlineTimer.Forever#
- __init__(arg__1[, type_=Qt.CoarseTimer])#
- Parameters:
arg__1 –
ForeverConstant
type –
TimerType
QDeadlineTimer
objects created withForeverConstant
never expire. For such objects,remainingTime()
will return -1,deadline()
will return the maximum value, andisForever()
will return true.The timer type
timerType
may be ignored, since the timer will never expire.- __init__(type_)
- Parameters:
type –
TimerType
- __init__(msecs[, type=Qt.CoarseTimer])
- Parameters:
msecs – int
type –
TimerType
Constructs a
QDeadlineTimer
object with an expiry time ofmsecs
msecs from the moment of the creation of this object, if msecs is positive. Ifmsecs
is zero, thisQDeadlineTimer
will be marked as expired, causingremainingTime()
to return zero anddeadline()
to return an indeterminate time point in the past. Ifmsecs
is negative, the timer will be set to never expire, causingremainingTime()
to return -1 anddeadline()
to return the maximum value.The
QDeadlineTimer
object will be constructed with the specified timertype
.For optimization purposes, if
msecs
is zero, this function may skip obtaining the current time and may instead use a value known to be in the past. If that happens,deadline()
may return an unexpected value and this object cannot be used in calculation of how long it is overdue. If that functionality is required, usecurrent()
and add time to it.Note
Prior to Qt 6.6, the only value that caused the timer to never expire was -1.
- __init__()
- static addNSecs(dt, nsecs)#
- Parameters:
dt –
QDeadlineTimer
nsecs – int
- Return type:
Returns a
QDeadlineTimer
object whose deadline is extended fromdt
's deadline bynsecs
nanoseconds. Ifdt
was set to never expire, this function returns aQDeadlineTimer
that will not expire either.Note
if
dt
was created as expired, its deadline is indeterminate and adding an amount of time may or may not cause it to become unexpired.Returns a
QDeadlineTimer
that is expired but is guaranteed to contain the current time. Objects created by this function can participate in the calculation of how long a timer is overdue, using thedeadline()
function.The
QDeadlineTimer
object will be constructed with the specifiedtimerType
.- deadline()#
- Return type:
int
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns the absolute time point for the deadline stored in
QDeadlineTimer
object, calculated in milliseconds relative to the reference clock, the same asmsecsSinceReference()
. The value will be in the past if thisQDeadlineTimer
has expired.If this
QDeadlineTimer
never expires, this function returnsstd::numeric_limits<qint64>::max()
.This function can be used to calculate the amount of time a timer is overdue, by subtracting
current()
ormsecsSinceReference()
, as in the following example:realTimeLeft = deadline.deadline() if realTimeLeft != (std.numeric_limits<qint64>.max)(): realTimeLeft -= QDeadlineTimer.current().deadline() # or: #QElapsedTimer timer #timer.start() #realTimeLeft -= timer.msecsSinceReference()
Note
Timers that were created as expired have an indetermine time point in the past as their deadline, so the above calculation may not work.
See also
- deadlineNSecs()#
- Return type:
int
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns the absolute time point for the deadline stored in
QDeadlineTimer
object, calculated in nanoseconds relative to the reference clock, the same asmsecsSinceReference()
. The value will be in the past if thisQDeadlineTimer
has expired.If this
QDeadlineTimer
never expires or the number of nanoseconds until the deadline can’t be accommodated in the return type, this function returnsstd::numeric_limits<qint64>::max()
.This function can be used to calculate the amount of time a timer is overdue, by subtracting
current()
, as in the following example:realTimeLeft = deadline.deadlineNSecs() if realTimeLeft != std.numeric_limits<qint64>.max(): realTimeLeft -= QDeadlineTimer.current().deadlineNSecs()
Note
Timers that were created as expired have an indetermine time point in the past as their deadline, so the above calculation may not work.
See also
- hasExpired()#
- Return type:
bool
Returns true if this
QDeadlineTimer
object has expired, false if there remains time left. For objects that have expired,remainingTime()
will return zero anddeadline()
will return a time point in the past.QDeadlineTimer
objects created with theForeverConstant
never expire and this function always returns false for them.See also
- isForever()#
- Return type:
bool
Returns true if this
QDeadlineTimer
object never expires, false otherwise. For timers that never expire,remainingTime()
always returns -1 anddeadline()
returns the maximum value.See also
- __ne__(d2)#
- Parameters:
d2 –
QDeadlineTimer
- Return type:
bool
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns true if the deadline on
d1
and the deadline ind2
are different, false otherwise. The timer type used to create the two deadlines is ignored. This function is equivalent to:return d1.deadlineNSecs() != d2.deadlineNSecs()
Note
comparing
QDeadlineTimer
objects with different timer types is not supported and may result in unpredictable behavior.- __add__(msecs)#
- Parameters:
msecs – int
- Return type:
Returns a
QDeadlineTimer
object whose deadline ismsecs
later than the deadline stored indt
. Ifdt
is set to never expire, this function returns aQDeadlineTimer
that does not expire either.To add times of precision greater than 1 millisecond, use
addNSecs()
.- __iadd__(msecs)#
- Parameters:
msecs – int
- Return type:
Extends this
QDeadlineTimer
object bymsecs
milliseconds and returns itself. If this object is set to never expire, this function does nothing.To add times of precision greater than 1 millisecond, use
addNSecs()
.- __sub__(dt2)#
- Parameters:
dt2 –
QDeadlineTimer
- Return type:
int
- __sub__(msecs)
- Parameters:
msecs – int
- Return type:
Returns a
QDeadlineTimer
object whose deadline ismsecs
before the deadline stored indt
. Ifdt
is set to never expire, this function returns aQDeadlineTimer
that does not expire either.To subtract times of precision greater than 1 millisecond, use
addNSecs()
.- __isub__(msecs)#
- Parameters:
msecs – int
- Return type:
Shortens this
QDeadlineTimer
object bymsecs
milliseconds and returns itself. If this object is set to never expire, this function does nothing.To subtract times of precision greater than 1 millisecond, use
addNSecs()
.- __lt__(d2)#
- Parameters:
d2 –
QDeadlineTimer
- Return type:
bool
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns true if the deadline on
d1
is earlier than the deadline ind2
, false otherwise. The timer type used to create the two deadlines is ignored. This function is equivalent to:return d1.deadlineNSecs() < d2.deadlineNSecs()
Note
comparing
QDeadlineTimer
objects with different timer types is not supported and may result in unpredictable behavior.- __le__(d2)#
- Parameters:
d2 –
QDeadlineTimer
- Return type:
bool
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns true if the deadline on
d1
is earlier than or the same as the deadline ind2
, false otherwise. The timer type used to create the two deadlines is ignored. This function is equivalent to:return d1.deadlineNSecs() <= d2.deadlineNSecs()
Note
comparing
QDeadlineTimer
objects with different timer types is not supported and may result in unpredictable behavior.- __eq__(d2)#
- Parameters:
d2 –
QDeadlineTimer
- Return type:
bool
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns true if the deadline on
d1
and the deadline ind2
are the same, false otherwise. The timer type used to create the two deadlines is ignored. This function is equivalent to:return d1.deadlineNSecs() == d2.deadlineNSecs()
Note
comparing
QDeadlineTimer
objects with different timer types is not supported and may result in unpredictable behavior.- __gt__(d2)#
- Parameters:
d2 –
QDeadlineTimer
- Return type:
bool
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns true if the deadline on
d1
is later than the deadline ind2
, false otherwise. The timer type used to create the two deadlines is ignored. This function is equivalent to:return d1.deadlineNSecs() > d2.deadlineNSecs()
Note
comparing
QDeadlineTimer
objects with different timer types is not supported and may result in unpredictable behavior.- __ge__(d2)#
- Parameters:
d2 –
QDeadlineTimer
- Return type:
bool
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns true if the deadline on
d1
is later than or the same as the deadline ind2
, false otherwise. The timer type used to create the two deadlines is ignored. This function is equivalent to:return d1.deadlineNSecs() >= d2.deadlineNSecs()
Note
comparing
QDeadlineTimer
objects with different timer types is not supported and may result in unpredictable behavior.- remainingTime()#
- Return type:
int
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Returns the remaining time in this
QDeadlineTimer
object in milliseconds. If the timer has already expired, this function will return zero and it is not possible to obtain the amount of time overdue with this function (to do that, seedeadline()
). If the timer was set to never expire, this function returns -1.This function is suitable for use in Qt APIs that take a millisecond timeout, such as the many
QIODevice
waitFor
functions or the timed lock functions inQMutex
,QWaitCondition
,QSemaphore
, orQReadWriteLock
. For example:mutex.tryLock(deadline.remainingTime())
- remainingTimeNSecs()#
- Return type:
int
Returns the remaining time in this
QDeadlineTimer
object in nanoseconds. If the timer has already expired, this function will return zero and it is not possible to obtain the amount of time overdue with this function. If the timer was set to never expire, this function returns -1.See also
Sets the deadline for this
QDeadlineTimer
object to be themsecs
absolute time point, counted in milliseconds since the reference clock (the same asmsecsSinceReference()
), and the timer type totimerType
. If the value is in the past, thisQDeadlineTimer
will be marked as expired.If
msecs
isstd::numeric_limits<qint64>::max()
or the deadline is beyond a representable point in the future, thisQDeadlineTimer
will be set to never expire.- setPreciseDeadline(secs[, nsecs=0[, type=Qt.CoarseTimer]])#
- Parameters:
secs – int
nsecs – int
type –
TimerType
Sets the deadline for this
QDeadlineTimer
object to besecs
seconds andnsecs
nanoseconds since the reference clock epoch (the same asmsecsSinceReference()
), and the timer type totimerType
. If the value is in the past, thisQDeadlineTimer
will be marked as expired.If
secs
ornsecs
isstd::numeric_limits<qint64>::max()
, thisQDeadlineTimer
will be set to never expire. Ifnsecs
is more than 1 billion nanoseconds (1 second), thensecs
will be adjusted accordingly.- setPreciseRemainingTime(secs[, nsecs=0[, type=Qt.CoarseTimer]])#
- Parameters:
secs – int
nsecs – int
type –
TimerType
Sets the remaining time for this
QDeadlineTimer
object tosecs
seconds plusnsecs
nanoseconds from now, ifsecs
has a positive value. Ifsecs
is negative, thisQDeadlineTimer
will be set it to never expire (this behavior does not apply tonsecs
). If both parameters are zero, thisQDeadlineTimer
will be marked as expired.For optimization purposes, if both
secs
andnsecs
are zero, this function may skip obtaining the current time and may instead use a value known to be in the past. If that happens,deadline()
may return an unexpected value and this object cannot be used in calculation of how long it is overdue. If that functionality is required, usecurrent()
and add time to it.The timer type for this
QDeadlineTimer
object will be set to the specifiedtimerType
.Note
Prior to Qt 6.6, the only condition that caused the timer to never expire was when
secs
was -1.Sets the remaining time for this
QDeadlineTimer
object tomsecs
milliseconds from now, ifmsecs
has a positive value. Ifmsecs
is zero, thisQDeadlineTimer
object will be marked as expired, whereas a negative value will set it to never expire.For optimization purposes, if
msecs
is zero, this function may skip obtaining the current time and may instead use a value known to be in the past. If that happens,deadline()
may return an unexpected value and this object cannot be used in calculation of how long it is overdue. If that functionality is required, usecurrent()
and add time to it.The timer type for this
QDeadlineTimer
object will be set to the specifiedtimerType
.Note
Prior to Qt 6.6, the only value that caused the timer to never expire was -1.
Changes the timer type for this object to
timerType
.The behavior for each possible value of
timerType
is operating-system dependent.PreciseTimer
will use the most precise timer that Qt can find, with resolution of 1 millisecond or better, whereasQDeadlineTimer
will try to use a more coarse timer forCoarseTimer
andVeryCoarseTimer
.See also
- swap(other)#
- Parameters:
other –
QDeadlineTimer
Swaps this deadline timer with the
other
deadline timer.Returns the timer type is active for this object.
See also