重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
1、函數(shù)定義
成都創(chuàng)新互聯(lián)公司服務(wù)項目包括吳忠網(wǎng)站建設(shè)、吳忠網(wǎng)站制作、吳忠網(wǎng)頁制作以及吳忠網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,吳忠網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到吳忠省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
①使用def關(guān)鍵字定義函數(shù)
②
def 函數(shù)名(參數(shù)1.參數(shù)2.參數(shù)3...):
"""文檔字符串,docstring,用來說明函數(shù)的作用"""
#函數(shù)體
return 表達(dá)式
注釋的作用:說明函數(shù)是做什么的,函數(shù)有什么功能。
③遇到冒號要縮進,冒號后面所有的縮進的代碼塊構(gòu)成了函數(shù)體,描述了函數(shù)是做什么的,即函數(shù)的功能是什么。Python函數(shù)的本質(zhì)與數(shù)學(xué)中的函數(shù)的本質(zhì)是一致的。
2、函數(shù)調(diào)用
①函數(shù)必須先定義,才能調(diào)用,否則會報錯。
②無參數(shù)時函數(shù)的調(diào)用:函數(shù)名(),有參數(shù)時函數(shù)的調(diào)用:函數(shù)名(參數(shù)1.參數(shù)2.……)
③不要在定義函數(shù)的時候在函數(shù)體里面調(diào)用本身,否則會出不來,陷入循環(huán)調(diào)用。
④函數(shù)需要調(diào)用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。
⑤Debug工具中Step into進入到調(diào)用的函數(shù)里,Step Into My Code進入到調(diào)用的模塊里函數(shù)。
time.sleep() 函數(shù)命名來源于英文單詞time(時間)和sleep(睡眠)。
time 是python帶的非內(nèi)置庫,使用時需要import,主要用于處理和時間相關(guān)的操作。
time.sleep用于給定時間內(nèi)掛起(等待)當(dāng)前線程的執(zhí)行。
time.sleep() 函數(shù)的例子:
可以注釋掉time.sleep(2)再運行一次對比一下
可以看到雖然都是打印出一樣的結(jié)果,但time.sleep()加入了等待時間
這里還要解釋一下python中線程與進程的區(qū)別。
舉個例子,廚房做菜看成是一個進程,那么這個進程下面就可能有多個人或一個人(cpu基本執(zhí)行單元,即線程)來執(zhí)行,多個人可以分別洗菜,刷碗,擺盤等等同時作業(yè),他們又是共享這個廚房的資源的。每個人存在一定的資源競爭關(guān)系,比如爐火只有1個。
這里time.sleep是針對線程執(zhí)行的,也就是其中一個人去sleep睡覺了,不影響其他人的繼續(xù)工作。
參數(shù)
該函數(shù)沒有返回值。
結(jié)果類似如下:
可以看到秒數(shù)相差了5
無
time.sleep()常用于推遲執(zhí)行的場景
在python中,與時間相關(guān)的模塊有:time,datetime以及calendar
對基礎(chǔ)運行環(huán)境有疑問的,推薦參考: python函數(shù)深入淺出 0.基礎(chǔ)篇
現(xiàn)象描述:
1、time.clock 在win系統(tǒng)和linux系統(tǒng)下對相同程序的計時結(jié)果不一致
2、到底應(yīng)該用什么時間計時?為什么用time.time與time.clock計時會有那么大的差異
在計算機領(lǐng)域有多種時間。
第一種稱作CPU時間或執(zhí)行時間,用于測量在執(zhí)行一個程序時CPU所花費的時間。第二種稱作掛鐘時間,測量執(zhí)行一個程序時的總時間。掛鐘時間也被稱作流逝時間或運行時間。與CPU時間相比,掛鐘時間通常長些,因為CPU執(zhí)行測量的程序可能同時還在執(zhí)行其它程序的指令。
另一個重要概念是所謂的系統(tǒng)時間,由系統(tǒng)時鐘測量。系統(tǒng)時間表示計算機系統(tǒng)時間傳遞的概念。要記住系統(tǒng)時鐘是可以由操作系統(tǒng)修改的,就是修改系統(tǒng)時間。
在Unix系統(tǒng)上,time.time的作用與Windows相同,但time.clock的意義不同。
在Unix系統(tǒng)上,time.clock以秒為單位返回當(dāng)前處理器時間,例如,執(zhí)行當(dāng)前線程所花費的CPU時間。而在Windows上,它是以秒為單位的返回自首次調(diào)用該函數(shù)以來所流逝的系統(tǒng)時間。
以我遇到的Ubuntu系統(tǒng)上運行time.time和time.clock的例子:
time.time()顯示系統(tǒng)時間過去大概1秒,而time.clock()顯示花費在當(dāng)前進程上的CPU時間只有于1毫秒。
而win下time.time()和time.clock()顯示系統(tǒng)時間都是大致過去了1秒
在測量程序準(zhǔn)確性能時應(yīng)該使用哪一個呢?
這要視情況而定。如果程序運行的系統(tǒng)能夠提供足夠的資源給程序,例如,一個運行基于Python的web應(yīng)用程序的web服務(wù)器,則使用time.clock()來測量程序會更有意義,因這個web應(yīng)用程序可能是服務(wù)器上的主要程序 。如果程序運行的系統(tǒng)上還同時運行著其它大量程序,則使用time.time()進行測量會更有意義。 如果不是這樣,就應(yīng)該使用基于掛鐘的計時器來測量程序的性能,因為這樣通常能反應(yīng)程序的環(huán)境。
放結(jié)論,一般情況下:
1、win用time.clock或time.time
2、linux 下用time.time? 或 datetime.datetime.now().timestamp()
【1】(重要)? ? Python測量時間,用time.time還是time.clock?
使用timeit模塊,先介紹下:
timeit 模塊
timeit?模塊定義了接受兩個參數(shù)的?Timer?類。兩個參數(shù)都是字符串。 第一個參數(shù)是你要計時的語句或者函數(shù)。 傳遞給?Timer?的第二個參數(shù)是為第一個參數(shù)語句構(gòu)建環(huán)境的導(dǎo)入語句。 從內(nèi)部講,?timeit?構(gòu)建起一個獨立的虛擬環(huán)境, 手工地執(zhí)行建立語句,然后手工地編譯和執(zhí)行被計時語句。
一旦有了?Timer?對象,最簡單的事就是調(diào)用?timeit(),它接受一個參數(shù)為每個測試中調(diào)用被計時語句的次數(shù),默認(rèn)為一百萬次;返回所耗費的秒數(shù)。
Timer?對象的另一個主要方法是?repeat(), 它接受兩個可選參數(shù)。 第一個參數(shù)是重復(fù)整個測試的次數(shù),第二個參數(shù)是每個測試中調(diào)用被計時語句的次數(shù)。 兩個參數(shù)都是可選的,它們的默認(rèn)值分別是?3?和?1000000。?repeat()?方法返回以秒記錄的每個測試循環(huán)的耗時列表。Python?有一個方便的?min?函數(shù)可以把輸入的列表返回成最小值,如: min(t.repeat(3, 1000000))
你可以在命令行使用?timeit?模塊來測試一個已存在的?Python?程序,而不需要修改代碼。
再給你個例子,你就知道怎么做了。
#?-*-?coding:?utf-8?-*-
#!/bin/env?python
def?test1():
n=0
for?i?in?range(101):
n+=i
return?n
def?test2():
return?sum(range(101))
def?test3():
return?sum(x?for?x?in?range(101))
if?__name__=='__main__':
from?timeit?import?Timer
t1=Timer("test1()","from?__main__?import?test1")
t2=Timer("test2()","from?__main__?import?test2")
t3=Timer("test3()","from?__main__?import?test3")
print?t1.timeit(1000000)
print?t2.timeit(1000000)
print?t3.timeit(1000000)
print?t1.repeat(3,1000000)
print?t2.repeat(3,1000000)
print?t3.repeat(3,1000000)