您好,登錄后才能下訂單哦!
這篇文章主要介紹“Time怎么使用”,在日常操作中,相信很多人在Time怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Time怎么使用”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
先看下 Time 簡(jiǎn)單使用
import time
from threading import Timer
def test_timer():
print("start=======")
t1 = time.time()
time.sleep(3)
print("ok")
t2 = time.time()
t21 = t2 - t1
print('t21====', t21)
def async_test_timer():
Timer(1, test_timer, []).start()
if __name__ == "__main__":
tm1 = time.time()
time.sleep(1)
async_test_timer()
tm2 = time.time()
tm21 = tm2 - tm1
print('tm21=====', tm21)
上面代碼的執(zhí)行結(jié)果為:
tm21===== 1.0052900314331055start=======okt21==== 3.0050549507141113
上面的代碼是先打印了 tm21 ,然后再執(zhí)行了 async_test_timer 函數(shù),Timer 類表示一個(gè)動(dòng)作應(yīng)該在一個(gè)特定的時(shí)間之后運(yùn)行 — 也就是一個(gè)計(jì)時(shí)器。Timer是Thread的子類, 因此也可以使用函數(shù)創(chuàng)建自定義線程。它是異步的,用它處理耗時(shí)的操作很方便。第一個(gè)參數(shù)是多少秒后執(zhí)行,第二個(gè)參數(shù)是函數(shù)名,第三個(gè)參數(shù)是要異步執(zhí)行的函數(shù)所需的參數(shù)。
下面附 Timer 類的源碼,它繼承了 Thread 類。
class Timer(Thread):
"""Call a function after a specified number of seconds:
t = Timer(30.0, f, args=None, kwargs=None)
t.start()
t.cancel() # stop the timer's action if it's still waiting
"""
def __init__(self, interval, function, args=None, kwargs=None):
Thread.__init__(self)
self.interval = interval
self.function = function
self.args = args if args is not None else []
self.kwargs = kwargs if kwargs is not None else {}
self.finished = Event()
class Thread:
"""A class that represents a thread of control.
This class can be safely subclassed in a limited fashion. There are two ways
to specify the activity: by passing a callable object to the constructor, or
by overriding the run() method in a subclass.
"""
_initialized = False
# Need to store a reference to sys.exc_info for printing
# out exceptions when a thread tries to use a global var. during interp.
# shutdown and thus raises an exception about trying to perform some
# operation on/with a NoneType
_exc_info = _sys.exc_info
# Keep sys.exc_clear too to clear the exception just before
# allowing .join() to return.
#XXX __exc_clear = _sys.exc_clear
def __init__(self, group=None, target=None, name=None,
args=(), kwargs=None, *, daemon=None):
"""This constructor should always be called with keyword arguments. Arguments are:
*group* should be None; reserved for future extension when a ThreadGroup
class is implemented.
*target* is the callable object to be invoked by the run()
method. Defaults to None, meaning nothing is called.
*name* is the thread name. By default, a unique name is constructed of
the form "Thread-N" where N is a small decimal number.
*args* is the argument tuple for the target invocation. Defaults to ().
*kwargs* is a dictionary of keyword arguments for the target
invocation. Defaults to {}.
If a subclass overrides the constructor, it must make sure to invoke
the base class constructor (Thread.__init__()) before doing anything
else to the thread.
"""
assert group is None, "group argument must be None for now"
if kwargs is None:
kwargs = {}
self._target = target
self._name = str(name or _newname())
self._args = args
self._kwargs = kwargs
if daemon is not None:
self._daemonic = daemon
else:
self._daemonic = current_thread().daemon
self._ident = None
self._tstate_lock = None
self._started = Event()
self._is_stopped = False
self._initialized = True
# sys.stderr is not stored in the class like
# sys.exc_info since it can be changed between instances
self._stderr = _sys.stderr
# For debugging and _after_fork()
_dangling.add(self)
到此,關(guān)于“Time怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。