對于python 多線程的理解,我花了很長時間,搜索的大部份文章都不夠通俗易懂。所以,這里力圖用簡單的例子,讓你對多線程有個初步的認(rèn)識。
單線程
在好些年前的MS-DOS時代,操作系統(tǒng)處理問題都是單任務(wù)的,我想做聽音樂和看電影兩件事兒,那么一定要先排一下順序。
(好吧!我們不糾結(jié)在DOS時代是否有聽音樂和看影的應(yīng)用。^_^)
代碼如下:
from time import ctime,sleep
def music():
for i in range(2):
print "I was listening to music. %s" %ctime()
sleep(1)
def move():
for i in range(2):
print "I was at the movies! %s" %ctime()
sleep(5)
if __name__ == '__main__':
music()
move()
print "all over %s" %ctime()
我們先聽了一首音樂,通過for循環(huán)來控制音樂的播放了兩次,每首音樂播放需要1秒鐘,sleep()來控制音樂播放的時長。接著我們又看了一場電影,
每一場電影需要5秒鐘,因為太好看了,所以我也通過for循環(huán)看兩遍。在整個休閑娛樂活動結(jié)束后,我通過
代碼如下:
print "all over %s" %ctime()
看了一下當(dāng)前時間,差不多該睡覺了。
運(yùn)行結(jié)果:
代碼如下:
>>=========================== RESTART ================================
>>>
I was listening to music. Thu Apr 17 10:47:08 2014
I was listening to music. Thu Apr 17 10:47:09 2014
I was at the movies! Thu Apr 17 10:47:10 2014
I was at the movies! Thu Apr 17 10:47:15 2014
all over Thu Apr 17 10:47:20 2014
其實,music()和move()更應(yīng)該被看作是音樂和視頻播放器,至于要播放什么歌曲和視頻應(yīng)該由我們使用時決定。所以,我們對上面代碼做了改造:
代碼如下:
#coding=utf-8
import threading
from time import ctime,sleep
def music(func):
for i in range(2):
print "I was listening to %s. %s" %(func,ctime())
sleep(1)
def move(func):
for i in range(2):
print "I was at the %s! %s" %(func,ctime())
sleep(5)
if __name__ == '__main__':
music(u'愛情買賣')
move(u'阿凡達(dá)')
print "all over %s" %ctime()
對music()和move()進(jìn)行了傳參處理。體驗中國經(jīng)典歌曲和歐美大片文化。
運(yùn)行結(jié)果:
代碼如下:
>>> ======================== RESTART ================================
>>>
I was listening to 愛情買賣. Thu Apr 17 11:48:59 2014
新聞熱點(diǎn)
疑難解答
圖片精選