一、多線程 1.我們的環境 (1)xubuntu 16.04(2)anaconda(3)pycharm(4)python 3.6 2.程式:一堆代碼以文本的形式存入一個文檔 3.進程:程式運行的一個狀態。 特點:(1)其中包含地址控制項、記憶體、數據棧等;(2)每個進程由自己完全獨立的運行環境,多進程共 ...
一、多線程
1.我們的環境
(1)xubuntu 16.04(2)anaconda(3)pycharm(4)python 3.6
2.程式:一堆代碼以文本的形式存入一個文檔
3.進程:程式運行的一個狀態。
特點:(1)其中包含地址控制項、記憶體、數據棧等;(2)每個進程由自己完全獨立的運行環境,多進程共用數據是一個問題。
4.線程:一個進程的獨立運行片段
特點:(1)一個進程可以有多個線程;(2)輕量化的進程;(3)一個進程的多個線程間共用數據和上下文運行環境;(4)共用互斥問題
5.全局解釋器鎖(GIL)
(1)Python代碼的執行是由python虛擬機進行控制
(2)在主迴圈中只能有一個控制線程在執行
6.python包
(1)thread:有問題,不好用,python3改為_thread
(2)threading:通行的包
7.例子:
import threading,time import _thread as thread #利用time生成兩個函數 def loop1(): print("Start loop 1 at:",time.ctime()) time.sleep(4) print("End loop 1 at :",time.ctime()) def loop2(): print("Start loop 2 at :",time.ctime()) time.sleep(2) print("End loop 2 at :",time.ctime()) def main(): print("Start at :",time.ctime()) thread.start_new_thread(loop1,())#這裡裡面的第二個位置是用來傳遞參數的,因為咱們的函數剛好沒有參數,因此咱們傳遞了一個空參數 thread.start_new_thread(loop2,()) print("End at :",time.ctime()) if __name__ == "__main__": main()
解釋:如上圖的運行結果:按照順序輸出開始時間,然後應該是線程1,線程2,最後是結束時間,從運行結果來看,現在只有開始時間以及結束時間,中間那兩個線程都沒了,這是因為,我們讓這兩個線程開始執行的時候我們的主線程已經之行結束了,導致中間兩個線程都沒有執行完,主線程終止了,所有中間的兩個線程也結束了。優秀!!
二、源碼
d24_1_multithread.py
地址:https://github.com/ruigege66/Python_learning/blob/master/d24_1_multithread.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換