對于python 多線程的理解,我花了很長時間,搜索的大部份文章都不夠通俗易懂。所以,這里力圖用簡單的例子,讓你對多線程有個初步的認識。
單線程
在好些年前的MS-DOS時代,操作系統處理問題都是單任務的,我想做聽音樂和看電影兩件事兒,那么一定要先排一下順序。
(好吧!我們不糾結在DOS時代是否有聽音樂和看影的應用。^_^)
代碼如下:
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循環來控制音樂的播放了兩次,每首音樂播放需要1秒鐘,sleep()來控制音樂播放的時長。接著我們又看了一場電影,
每一場電影需要5秒鐘,因為太好看了,所以我也通過for循環看兩遍。在整個休閑娛樂活動結束后,我通過
代碼如下:
print "all over %s" %ctime()
看了一下當前時間,差不多該睡覺了。
運行結果:
代碼如下:
>>=========================== 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()更應該被看作是音樂和視頻播放器,至于要播放什么歌曲和視頻應該由我們使用時決定。所以,我們對上面代碼做了改造:
代碼如下:
#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'阿凡達')
print "all over %s" %ctime()
對music()和move()進行了傳參處理。體驗中國經典歌曲和歐美大片文化。
運行結果:
代碼如下:
>>> ======================== RESTART ================================
>>>
I was listening to 愛情買賣. Thu Apr 17 11:48:59 2014
新聞熱點
疑難解答