Cara menggunakan modul benang untuk mencipta dan mengurus benang dalam Python 2.x

WBOY
Lepaskan: 2023-07-30 16:29:24
asal
1278 orang telah melayarinya

Cara menggunakan modul benang untuk mencipta dan mengurus benang dalam Python 2.x

Pengenalan:
Dalam pengaturcaraan berbilang benang, kita selalunya perlu mencipta dan mengurus berbilang benang untuk melaksanakan tugasan yang dilaksanakan secara serentak. Python menyediakan modul benang untuk menyokong pengaturcaraan berbilang benang. Artikel ini akan memperkenalkan cara menggunakan modul utas untuk mencipta dan mengurus utas, dan memberikan beberapa contoh kod.

  1. Ikhtisar modul benang:
    Modul benang menyediakan beberapa fungsi dan kelas berkaitan benang untuk mencipta dan mengurus benang. Berikut ialah pengenalan ringkas kepada fungsi dan kelas modul benang yang biasa digunakan:
  • thread.start_new_thread(function, args[, kwargs]): Cipta urutan baharu dan laksanakan fungsi fungsi dan kwarg ialah parameter yang dihantar ke fungsi.
  • thread.allocate_lock(): Cipta objek kunci baharu untuk mencapai penyegerakan antara benang.
  • thread.exit(): Benang keluar dan menamatkan pelaksanaan benang.
  • thread.get_ident(): Dapatkan pengecam urutan semasa.
  • thread.interrupt_main(): Mengganggu pelaksanaan utas utama.
  • thread.stack_size([saiz]): Dapatkan atau tetapkan saiz tindanan benang.
  1. Contoh mencipta utas:
    Contoh berikut menunjukkan cara menggunakan modul utas untuk mencipta utas.
import thread
import time

# 定义线程执行的函数
def print_time(threadName, delay):
    count = 0
    while count < 5:
        time.sleep(delay)
        count += 1
        print("%s: %s" % (threadName, time.ctime(time.time())))

# 创建两个线程
try:
    thread.start_new_thread(print_time, ("Thread-1", 2,))
    thread.start_new_thread(print_time, ("Thread-2", 4,))
except:
    print("Error: 无法启动线程")

# 主线程等待子线程结束
while 1:
    pass
Salin selepas log masuk

Jalankan kod di atas dan dua utas akan dibuat untuk mencetak masa semasa masing-masing setiap 2 saat dan 4 saat. Benang utama akan menunggu benang anak tamat.

  1. Penyegerakan dan penguncian benang:
    Dalam pengaturcaraan benang, selalunya perlu memastikan kerjasama yang betul antara berbilang benang untuk mengelakkan persaingan dan konflik. Modul benang menyediakan objek kunci untuk mencapai penyegerakan antara benang. Contoh berikut menunjukkan cara menggunakan kunci untuk menjamin pelaksanaan utas yang saling eksklusif.
import thread
import time

# 全局变量
counter = 0
lock = thread.allocate_lock()

# 线程函数
def increment_counter(threadName, delay):
    global counter
    while True:
        lock.acquire()
        counter += 1
        print("%s: %d" % (threadName, counter))
        lock.release()
        time.sleep(delay)

# 创建两个线程
try:
    thread.start_new_thread(increment_counter, ("Thread-1", 1,))
    thread.start_new_thread(increment_counter, ("Thread-2", 2,))
except:
    print("Error: 无法启动线程")

# 主线程等待子线程结束
while 1:
    pass
Salin selepas log masuk

Kod di atas mencipta dua utas, menambah pembolehubah pembilang pada kelajuan berbeza dan mencetak hasilnya. Melalui penggunaan kunci, akses yang saling eksklusif untuk melawan antara benang dipastikan, dan keadaan perlumbaan dielakkan.

Kesimpulan:
Artikel ini memperkenalkan kaedah asas untuk mencipta dan mengurus benang menggunakan modul benang dalam Python 2.x, dan menyediakan beberapa contoh kod. Adalah penting untuk memahami dan menguasai pengaturcaraan berbilang benang untuk meningkatkan prestasi dan responsif aplikasi anda. Dalam pembangunan sebenar, anda juga boleh menggunakan perpustakaan berbilang benang yang lebih maju dan fleksibel, seperti modul benang, yang menyediakan lebih banyak fungsi dan antara muka yang lebih mudah digunakan, tetapi prinsip dan idea asas adalah serupa.

Rujukan:

  • Dokumentasi modul benang Python: https://docs.python.org/2/library/thread.html

Atas ialah kandungan terperinci Cara menggunakan modul benang untuk mencipta dan mengurus benang dalam Python 2.x. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!