Python作為一門流行的高級編程語言,自然也支持線程和協程。
在Python中,線程是最基本的并發模型之一,可以通過threading模塊來實現線程的創建和管理。
import threading
def worker():
print('hello, world!')
t = threading.Thread(target=worker)
t.start()
當我們調用start()方法后,線程就會開始執行,在上述例子中會輸出"hello, world!"。
但是在Python 2.x中,由于全局解釋器鎖(GIL)的存在,多線程并不能真正的并行執行。所以如果需要充分利用多核CPU的性能,我們就必須使用協程來達到并行執行的效果。
Python 中的協程有多種實現方式,比如gevent、asyncio等庫。其中,asyncio庫是Python 3.4版本引入的標準庫,支持異步I/O操作和協程,可以用于構建高效的網絡應用和Web框架。
import asyncio
async def worker():
print('hello, world!')
loop = asyncio.get_event_loop()
loop.run_until_complete(worker())
在上述例子中,我們使用了asyncio庫中的協程函數定義了一個任務worker,并在事件循環中等待其完成。asyncio庫可以自動切換協程任務,從而達到高效的并發執行效果。
協程的優點在于輕量、高效、支持大并發。但是需要注意的是,協程需要在異步場景下使用,因此如果我們需要進行阻塞(如I/O操作)等操作,還需要結合其他的異步庫進行使用。