Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk mengagihkan kerja kepada satu set benang pekerja dalam Python?
Untuk mengedarkan kerja antara sekumpulan benang pekerja, gunakan modul .futures serentak, khususnya Kelas ThreadPoolExecutor.
Dengan alternatif ini, anda boleh mengodkan logik anda sendiri secara manual jika anda mahukan kawalan yang baik ke atas algoritma penjadualan. Gunakan modul baris gilir untuk membuat baris gilir yang mengandungi senarai kerja. Kelas Queue mengekalkan senarai objek dan mempunyai kaedah .put(obj) yang menambah item pada baris gilir dan kaedah .get() yang mengembalikan item. Kelas ini akan menjaga penguncian yang diperlukan untuk memastikan setiap kerja hanya diedarkan sekali.
Berikut adalah contoh -
import threading, queue, time # The worker thread gets jobs off the queue. When the queue is empty, it # assumes there will be no more work and exits. def worker(): print('Running worker') time.sleep(0.1) while True: try: arg = q.get(block=False) except queue.Empty: print('Worker', threading.current_thread(), end=' ') print('queue empty') break else: print('Worker', threading.current_thread(), end=' ') print('running with argument', arg) time.sleep(0.5) # Create a queue q = queue.Queue() # Start a pool of 5 workers for i in range(5): t = threading.Thread(target=worker, name='worker %i' % (i+1)) t.start() # Begin adding work to the queue for i in range(50): q.put(i) # Give threads time to run print('Main thread sleeping') time.sleep(5)
Running worker Running worker Running worker Running worker Running worker Main thread sleeping Worker running with argument 0 Worker running with argument 1 Worker running with argument 2 Worker running with argument 3 Worker running with argument 4 Worker running with argument 5 Worker running with argument 6 Worker running with argument 7 Worker running with argument 8 Worker running with argument 9 Worker running with argument 10 Worker running with argument 11 Worker running with argument 12 Worker running with argument 13 Worker running with argument 14 Worker running with argument 15 Worker running with argument 16 Worker running with argument 17 Worker running with argument 18 Worker running with argument 19 Worker running with argument 20 Worker running with argument 21 Worker running with argument 22 Worker running with argument 23 Worker running with argument 24 Worker running with argument 25 Worker running with argument 26 Worker running with argument 28 Worker running with argument 29 Worker running with argument 27 Worker running with argument 30 Worker running with argument 31 Worker running with argument 32 Worker running with argument 33 Worker running with argument 34 Worker running with argument 35 Worker running with argument 36 Worker running with argument 37 Worker running with argument 38 Worker running with argument 39 Worker running with argument 40 Worker running with argument 41 Worker running with argument 42 Worker running with argument 43 Worker running with argument 44 Worker running with argument 45 Worker running with argument 46 Worker running with argument 47 Worker running with argument 48 Worker running with argument 49 Worker queue empty Worker queue empty Worker queue empty Worker queue empty Worker queue empty
Atas ialah kandungan terperinci Bagaimana untuk mengagihkan kerja kepada satu set benang pekerja dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!