Cara menggunakan modul threading untuk pengurusan multi-thread dalam Python 3.x
Pengenalan:
Dalam bidang komputer, multi-threading ialah model pengaturcaraan penting yang boleh meningkatkan keselarasan dan kecekapan pelaksanaan program. Bahasa Python menyediakan modul threading untuk memudahkan pembangun mengurus berbilang benang. Artikel ini akan memperkenalkan cara menggunakan modul benang untuk pengaturcaraan berbilang benang dan menunjukkan penggunaan berbilang benang melalui contoh.
import threading count = 0 # 共享资源 lock = threading.Lock() # 互斥锁 def increase(): global count for _ in range(100000): lock.acquire() # 加锁 count += 1 lock.release() # 解锁 def decrease(): global count for _ in range(100000): lock.acquire() # 加锁 count -= 1 lock.release() # 解锁 if __name__ == '__main__': # 创建两个线程 t1 = threading.Thread(target=increase) t2 = threading.Thread(target=decrease) # 启动线程 t1.start() t2.start() # 等待线程结束 t1.join() t2.join() # 输出结果 print("count:", count)
Dalam contoh di atas, kami mencipta dua urutan t1 dan t2, memanggil fungsi peningkatan() dan penurunan() masing-masing untuk beroperasi pada kiraan sumber dikongsi. Memandangkan Kunci digunakan, tiada konflik berlaku. Akhirnya, nilai kiraan hasil adalah output.
import threading count = 0 # 共享资源 lock = threading.Lock() # 互斥锁 condition = threading.Condition() # 条件变量 def produce(): global count while True: with condition: if count >= 10: condition.wait() # 释放锁并等待条件变量 count += 1 print("Produced 1 item") condition.notify() # 通知等待的线程 def consume(): global count while True: with condition: if count <= 0: condition.wait() # 释放锁并等待条件变量 count -= 1 print("Consumed 1 item") condition.notify() # 通知等待的线程 if __name__ == '__main__': # 创建两个线程 t1 = threading.Thread(target=produce) t2 = threading.Thread(target=consume) # 启动线程 t1.start() t2.start() # 等待线程结束 t1.join() t2.join()
Dalam contoh di atas, kami mencipta dua utas t1 dan t2 dan masing-masing memanggil fungsi produce() dan consume() untuk mensimulasikan senario pengeluar dan pengguna. Dengan menggunakan kelas Keadaan, penyegerakan dan komunikasi antara benang dicapai. Apabila kiraan pembilang tidak memenuhi syarat, utas menunggu dan terus melaksanakan utas lain sehingga syarat dipenuhi, memberitahu utas menunggu.
Ringkasan:
Artikel ini memperkenalkan cara menggunakan modul threading untuk pengurusan berbilang benang dalam Python 3.x. Operasi asas multi-benang dan penggunaan penyegerakan benang ditunjukkan melalui kod sampel. Penggunaan munasabah multi-threading boleh meningkatkan kecekapan pelaksanaan program dan konkurensi, tetapi pada masa yang sama, perhatian mesti diberikan kepada isu keselamatan benang dan perkongsian data. Dalam aplikasi sebenar, pilih sahaja penyelesaian multi-threading yang sesuai mengikut keperluan khusus.
Atas ialah kandungan terperinci Cara menggunakan modul benang untuk pengurusan berbilang benang dalam Python 3.x. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!