Python 是一種廣泛使用的編程語言,支持多種方式的并發執行。并發是指同時執行多個任務,線程是實現并發的一種方式。
Python 中的并發執行有多種方式,包括多進程、協程以及線程。其中,多進程是使用多個進程同時執行任務,協程是使用單線程在不同任務之間切換來執行任務,而線程是在同一個進程中通過創建多個線程來同時執行多個任務。
Python 中的多線程使用 threading 模塊實現。以下是一個簡單的多線程示例:
import threading
def work():
for i in range(5):
print("Thread running:", threading.current_thread().name, i)
t1 = threading.Thread(target=work, name="Thread1")
t2 = threading.Thread(target=work, name="Thread2")
t1.start()
t2.start()
t1.join()
t2.join()
print("Done!")
在以上示例中,我們創建了兩個線程 t1 和 t2,分別執行 work 函數。通過 start 方法啟動線程,通過 join 方法等待線程執行完成。
線程間通信是多線程編程中常見的問題。Python 中通過使用線程鎖(Lock)實現線程間同步。以下是一個線程鎖示例:
import threading
total = 0
lock = threading.Lock()
def add():
global total
for i in range(100000):
lock.acquire()
total += 1
lock.release()
def sub():
global total
for i in range(100000):
lock.acquire()
total -= 1
lock.release()
t1 = threading.Thread(target=add)
t2 = threading.Thread(target=sub)
t1.start()
t2.start()
t1.join()
t2.join()
print("Total:", total)
在以上示例中,我們使用線程鎖確保了操作 total 變量的原子性,避免了多線程同時訪問導致的數據不一致問題。
總之,Python 提供了多種方式實現并發執行,線程是其中一種常用方式。多線程編程需要注意線程間同步、線程間的資源競爭以及死鎖等問題。