Memahami kombinasi Threading dan Queue dengan Python

Saya mulai mencari cara membuat utas dengan Python. Saya melakukan pencarian teori terlebih dahulu untuk memahami cara kerja Threads dengan Python. Saya juga membaca tentang penggunaan Antrean dengan Python dan bagaimana hal ini dapat membantu memecahkan masalah Threading yang sepele. Saya dapat memahami kode terpisah untuk masing-masing kode. Kemudian saya menemukan tutorial berikut:

http://www.ibm.com/developerworks/aix/library/au-threadingpython/

Ini menunjukkan relevansi Thread dan Queue dengan Python dan bagaimana hal ini dapat mempercepat proses eksekusi dalam keadaan tertentu.

Saya mengalami kesulitan dalam memahami beberapa area kode

def main():

        #spawn a pool of threads, and pass them queue instance 
        for i in range(5):
          t = ThreadUrl(queue)
          t.setDaemon(True)
          t.start()

       #populate queue with data   
          for host in hosts:
            queue.put(host)

       #wait on the queue until everything has been processed     
       queue.join()

      main()
      print "Elapsed Time: %s" % (time.time() - start)

Pada perulangan for pertama, beberapa thread dibuat dan sebuah instance antrian diteruskan ke sana. Tapi dari pemahaman saya antriannya masih kosong sampai sekarang.

Di perulangan for berikutnya

for host in hosts:

Nilai host dimasukkan ke dalam antrian. Sekarang bagaimana data Antrian ini ditugaskan ke thread?

Terakhir, apa gunanya queue.join() dengan relevansinya dengan program ini?


person abhinav singh    schedule 10.11.2014    source sumber


Jawaban (1)


"Dalam perulangan for pertama, beberapa utas dibuat dan sebuah instance antrian diteruskan ke sana. Tapi dari pemahaman saya, antrian itu kosong sampai sekarang."

Ya, threadnya sudah dimulai tetapi belum ada pekerjaan yang harus diselesaikan.

for host in hosts:

"Nilai host dimasukkan ke dalam antrean. Sekarang bagaimana data Antrean ini ditetapkan ke thread?"

oleh contoh Antrian

"apa gunanya queue.join() dengan relevansinya dengan program ini?"

join menyebabkan program Anda menunggu hingga semua thread selesai diproses dan outputnya dikumpulkan oleh instance antrian. Program Anda akan diblokir pada titik ini hingga antrian selesai.

person Anentropic    schedule 10.11.2014