Masalah utama dengan benang ialah mereka boleh mencipta banyak perbalahan untuk sumber, seperti masa dan memori CPU. Ini boleh membawa kepada masalah jika dua utas cuba mengakses sumber yang sama pada masa yang sama.ing_simple.py
#!/usr/bin/python import threading masa import # Tentukan fungsi untuk thread def print_time( threadName, delay): count = 0 manakala count < 5: time.sleep(delay) count += 1 print "%s: %s" % ( threadName, time.ctime(time.time()) ) # Buat dua thread seperti berikut cuba: thread.start_new_thread( print_time, ("Thread-1", 2, ) ) thread.start_new_thread( print_time, ( "Thread-2", 4, ) ) kecuali: print "Error: unable to start thread" manakala 1: pass[/code] Kod ini mencipta dua thread. Urutan pertama akan menjalankan fungsi "print_time" setiap 2 saat dan thread kedua akan menjalankan fungsi "print_time" setiap 4 saat.
Objek Threading
Dalam Python, anda boleh memasukkan objek dengan menggunakan modul penjalinan. Modul ini menyediakan pelbagai fungsi yang boleh anda gunakan untuk mencipta dan mengurus benang dalam kod anda.
Untuk memulakan benang baharu dalam Python, anda boleh menggunakan fungsi threading.Thread(). Fungsi ini mengambil sebagai satu-satunya hujahnya objek fungsi yang anda mahu jalankan sebagai utas. Objek fungsi mesti mempunyai atribut __name__, yang menentukan nama utas yang fungsi ini akan dijalankan.
Sebaik sahaja anda telah mencipta benang menggunakan fungsi Thread(), anda boleh memulakannya dengan memanggil kaedah Threading.start(). Kaedah ini mengambil sebagai satu-satunya hujahnya rentetan yang menentukan nama fail program di mana utas baharu harus mula dilaksanakan.
Anda juga boleh menggunakan kaedah Threading.join() untuk menamatkan benang yang sedang berjalan dan mengembalikan kawalan kembali ke gelung program utama anda. Kaedah ini mengambil sebagai satu-satunya hujahnya rentetan yang menentukan nama fail atur cara di mana urutan baharu harus menamatkan pelaksanaan.
Benang Daemon
Benang daemon ialah benang yang berjalan di latar belakang program. Ia digunakan untuk mengendalikan tugas atau perkhidmatan yang berjalan lama tanpa mengganggu aliran pelaksanaan biasa.