什么是進(jìn)程勒奇?
進(jìn)程是二進(jìn)制可執(zhí)行文件的數(shù)據(jù)直秆,他們只有被調(diào)到內(nèi)存中濒募,被操作系統(tǒng)調(diào)用的時(shí)候才開(kāi)始他們的生命周期,進(jìn)程是程序的每一次執(zhí)行圾结,進(jìn)程有單獨(dú)的內(nèi)存空間瑰剃、數(shù)據(jù)棧等,所以只能使用進(jìn)程間通信(IPC)筝野,而不能直接共享信息晌姚。
什么是線(xiàn)程粤剧?
線(xiàn)程又稱(chēng)輕量級(jí)進(jìn)程,所有線(xiàn)程運(yùn)行在同一進(jìn)程中挥唠,共享相同的運(yùn)行環(huán)境抵恋。一個(gè)進(jìn)程中各線(xiàn)程的數(shù)據(jù)是共享的。
在python中使用thread模塊實(shí)現(xiàn)多讀線(xiàn)程操作猛遍。
倒入thread模塊import thread
如果沒(méi)有使用線(xiàn)程馋记,系統(tǒng)執(zhí)行任務(wù)是順序的,一個(gè)執(zhí)行完后才會(huì)去執(zhí)行另一個(gè)懊烤,我們通過(guò)sleep函數(shù)驗(yàn)證cpu等待任務(wù)過(guò)程梯醒。
示例代碼如下:
`` #!/usr/bin/env python
from time import sleep, ctime
def loop0():
print 'start loop0 at:', ctime()
sleep(4)
print 'loop0 done at:', ctime()
def loop1():
print 'start loop1 at:',ctime()
sleep(2)
print 'loop1 done at:', ctime()
def main():
print 'string at :', ctime()
loop0()
loop1()
print 'all done at:', ctime()
if name == 'main':
main()
``
運(yùn)行結(jié)果如圖:
python的threading模塊
python提供了幾個(gè)線(xiàn)程模塊,包括thread腌紧、threading茸习、queue等。thread和threading允許程序員創(chuàng)建和管理線(xiàn)程壁肋,thread提供基本線(xiàn)程和鎖支持号胚,threading提供更高級(jí)的線(xiàn)程管理。queue允許用戶(hù)創(chuàng)建一個(gè)可以用于多個(gè)線(xiàn)程之間個(gè)共享數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)浸遗。
使用thread創(chuàng)建線(xiàn)程示例代碼如下:
``
!/usr/bin/env python
import thread
from time import ctime, sleep
def loop0():
print 'start loop 0 at:', ctime()
sleep(4)
print 'loop 0 done at:', ctime()
def loop1():
print 'start loop 1 at:', ctime()
sleep(2)
print 'loop 1 done at:', ctime()
def main():
print 'starting at:', ctime()
thread.start_new_thread(loop0,())
thread.start_new_thread(loop1,())
sleep(6)
print 'all done at:', ctime()
if name == 'main':
main()
``
運(yùn)行結(jié)果如圖: