前言:因為GIL的限制,python的線程是無法真正意義上并行的。相對于異步編程,其性能可以說不是一個等量級的。為什么我們還要學習多線程編程呢,雖然說異步編程好處多,但編程也較為復雜,邏輯不容易理解,學習成本和維護成本都比較高。畢竟我們大部分人還是適應同步編碼的,除非一些需要高性能處理的地方采用異步。
為吉利等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及吉利網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站設計制作、成都網(wǎng)站制作、吉利網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!首先普及下進程和線程的概念:
進程:進程是操作系統(tǒng)資源分配的基本單位。
線程:線程是任務調度和執(zhí)行的基本單位。
一個應用程序至少一個進程,一個進程至少一個線程。
兩者區(qū)別:同一進程內的線程共享本進程的資源如內存、I/O、cpu等,但是進程之間的資源是獨立的。
一、多線程
python 可以通過 thread 或 threading 模塊實現(xiàn)多線程,threading 相比 thread 提供了更高階、更全面的線程管理。我們下文主要以 threading 模塊介紹多線程的基本用法。
import threading import time class thread(threading.Thread): def __init__(self, threadname): threading.Thread.__init__(self, name='線程' + threadname) def run(self): print('%s:Now timestamp is %s'%(self.name,time.time())) threads = [] for a in range(int(5)): # 線程個數(shù) threads.append(thread(str(a))) for t in threads: # 開啟線程 t.start() for t in threads: # 阻塞線程 t.join() print('END')
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。