Barisan Pemprosesan Berbilang Python

Barisan Pemprosesan Berbilang Python



Elemen yang paling penting dalam struktur data ialah baris gilir. Barisan struktur data 'masuk dahulu, keluar dahulu' yang merupakan asas untuk pemproses berbilang Python adalah setanding. Baris gilir disediakan kepada fungsi proses untuk membenarkan proses mengumpul data. Item pertama data yang akan dihapuskan daripada baris gilir ialah item pertama yang akan dimasukkan. Kami menggunakan kaedah 'put()' baris gilir untuk menambahkan data pada baris gilir dan kaedah 'get()'nya untuk mendapatkan semula data daripada baris gilir.

Contoh 1: Menggunakan Kaedah Queue() untuk Membuat Baris Gilir Berbilang Pemprosesan dalam Python

Dalam contoh ini, kami mencipta baris gilir berbilang pemprosesan dalam Python menggunakan kaedah 'baris gilir()'. Multiprocessing merujuk kepada penggunaan satu atau lebih CPU dalam sistem untuk melaksanakan dua atau lebih proses secara serentak. Multiprocessing, modul yang dibina dalam Python, memudahkan pertukaran antara proses. Kita mesti biasa dengan sifat proses sebelum bekerja dengan multiprocessing. Kami sedar bahawa baris gilir adalah komponen penting dalam model data. Baris gilir data standard, yang dibina di atas idea 'Masuk-Dulu-Keluar' dan pemproses berbilang Python adalah rakan yang tepat. Secara umum, baris gilir menyimpan objek Python dan penting untuk pemindahan data antara tugas.







Alat 'spyder' digunakan untuk melaksanakan skrip Python, jadi mari kita mulakan sahaja. Kita mesti terlebih dahulu mengimport modul multiprocessing kerana kita menjalankan skrip multiprocessing Python. Kami melakukan ini dengan mengimport modul berbilang pemprosesan sebagai 'm'. Menggunakan teknik 'm.queue()', kami menggunakan kaedah 'queue()' multiprocessing. Di sini, kami mencipta pembolehubah yang dipanggil 'baris gilir' dan meletakkan kaedah 'baris gilir()' berbilang pemprosesan di dalamnya. Seperti yang kita tahu bahawa baris gilir menyimpan item dalam susunan 'masuk dahulu, keluar dahulu', item yang kita tambah dahulu dialih keluar terlebih dahulu. Selepas melancarkan baris gilir berbilang pemprosesan, kami kemudian memanggil kaedah 'cetak ()', menghantar pernyataan 'Terdapat baris gilir berbilang pemprosesan' sebagai hujahnya untuk memaparkannya pada skrin. Kemudian, kerana kami menyimpan baris gilir yang dibina dalam pembolehubah ini, kami mencetak baris gilir dengan melepasi pembolehubah 'baris gilir' dalam kurungan kaedah 'cetak ()'.




Imej berikut menunjukkan bahawa baris gilir berbilang pemprosesan Python kini dibina. Penyata cetakan ditunjukkan dahulu. Selepas baris gilir berbilang pemprosesan ini dibina dalam alamat memori yang ditetapkan, ia boleh digunakan untuk memindahkan data yang berbeza antara dua atau lebih proses yang sedang berjalan.







Contoh 2: Menggunakan Kaedah “Qsize()” untuk Menentukan Saiz Baris Berbilang Pemprosesan dalam Python

Kami menentukan saiz baris gilir berbilang pemprosesan dalam kes ini. Untuk mengira saiz baris gilir berbilang pemprosesan, kami menggunakan kaedah 'qsize()'. Fungsi 'qsize()' mengembalikan saiz sebenar baris gilir berbilang pemprosesan Python. Dalam erti kata lain, kaedah ini menyediakan jumlah bilangan item dalam baris gilir.

Mari mulakan dengan mengimport modul pemproses berbilang Python sebagai 'm' sebelum menjalankan kod. Kemudian, menggunakan perintah 'm.queue()', kami menggunakan fungsi 'queue()' multiprocessing dan meletakkan hasilnya dalam pembolehubah 'Queue'. Kemudian, menggunakan kaedah 'put()', kami menambah item pada baris gilir dalam baris berikut. Kaedah ini digunakan untuk menambah data pada baris gilir. Oleh itu, kami memanggil 'Baris Gilir' dengan kaedah 'put()' dan membekalkan nombor integer sebagai elemennya dalam kurungannya. Nombor yang kami tambah ialah '1', '2', '3', '4', '5', '6' dan '7' menggunakan fungsi 'put()'.



Tambahan pula, menggunakan 'Baris Gilir' untuk mendapatkan saiz baris gilir berbilang pemprosesan, kami memanggil 'qsize()' dengan baris gilir berbilang pemprosesan. Kemudian, dalam pembolehubah 'hasil' yang baru dibentuk, kami menyimpan hasil kaedah 'qsize()'. Selepas itu, kami memanggil kaedah 'cetak ()' dan lulus pernyataan 'Saiz baris gilir berbilang pemprosesan ialah' sebagai parameternya. Seterusnya, kami memanggil pembolehubah 'hasil' dalam fungsi 'cetak ()' kerana saiz disimpan dalam pembolehubah ini.


Imej output mempunyai saiz yang dipaparkan. Semasa kami menggunakan fungsi 'put()' untuk menambah tujuh elemen pada baris gilir berbilang pemprosesan dan fungsi 'qsize()' untuk menentukan saiz, saiz baris gilir berbilang pemprosesan '7' dipaparkan. Pernyataan input 'saiz baris gilir berbilang pemprosesan' ditunjukkan sebelum saiz.

Contoh 3: Menggunakan Kaedah 'Put()' dan 'Get()' dalam Barisan Pemprosesan Berbilang Python

Kaedah baris gilir 'put()' dan 'get()' daripada baris gilir berbilang pemprosesan Python digunakan dalam contoh ini. Kami membangunkan dua fungsi yang ditentukan pengguna dalam contoh ini. Dalam contoh ini, kami mentakrifkan fungsi untuk mencipta proses yang menghasilkan integer rawak '5'. Kami juga menggunakan kaedah 'put()' untuk menambahkannya pada baris gilir. Kaedah 'put()' digunakan untuk meletakkan item ke dalam baris gilir. Kemudian, untuk mendapatkan semula nombor dari baris gilir dan mengembalikan nilainya, kami menulis fungsi lain dan memanggilnya semasa prosedur. Kami menggunakan fungsi 'get()' untuk mendapatkan semula nombor daripada baris gilir kerana kaedah ini digunakan untuk mendapatkan semula data daripada baris gilir yang kami masukkan menggunakan kaedah 'put()'.

Mari kita mula melaksanakan kod sekarang. Pertama, kami mengimport empat perpustakaan yang membentuk skrip ini. Kami mula-mula mengimport 'tidur' daripada modul masa untuk menangguhkan pelaksanaan selama beberapa waktu yang diukur dalam beberapa saat, diikuti dengan 'rawak' daripada modul rawak yang digunakan untuk menjana nombor rawak, kemudian 'memproses' daripada berbilang pemprosesan kerana kod ini mencipta proses , dan akhirnya, 'baris gilir' daripada berbilang pemprosesan. Dengan mulanya membina contoh kelas, baris gilir boleh digunakan. Secara lalai, ini mewujudkan baris gilir tak terhingga atau baris gilir tanpa saiz maksimum. Dengan menetapkan pilihan saiz maksimum kepada nombor yang lebih besar daripada sifar, adalah mungkin untuk membuat ciptaan dengan sekatan saiz.


Kami mentakrifkan fungsi. Kemudian, oleh kerana fungsi ini ditakrifkan pengguna, kami memberikannya nama 'function1' dan lulus istilah 'queue' sebagai hujahnya. Selepas itu, kami menggunakan fungsi 'cetak()', menghantarnya kepada pernyataan 'pembina: Berjalan', 'siram' dan objek 'Benar'. Fungsi cetakan Python mempunyai pilihan unik yang dipanggil flush yang membolehkan pengguna memilih sama ada untuk menimbal output ini atau tidak. Langkah seterusnya ialah menjana tugasan. Untuk melakukan ini, kami menggunakan 'untuk' dan membuat pembolehubah 'm' dan menetapkan julat kepada '5'. Kemudian, dalam baris seterusnya, gunakan 'rawak()' dan simpan hasilnya dalam pembolehubah yang kami buat iaitu 'nilai'. Ini menunjukkan bahawa fungsi itu kini menamatkan lima lelarannya, dengan setiap lelaran mencipta integer rawak dari 0 hingga 5.

Kemudian, dalam langkah berikut, kami memanggil fungsi 'sleep()' dan lulus hujah 'nilai' untuk menangguhkan bahagian untuk beberapa saat tertentu. Kemudian, kami memanggil 'baris gilir' dengan kaedah 'put()' untuk menambah nilai pada baris gilir. Pengguna kemudiannya dimaklumkan bahawa tiada kerja lanjut yang perlu dilakukan dengan menggunakan kaedah 'queue.put()' sekali lagi dan melepasi nilai 'Tiada'. Kemudian, kami menjalankan kaedah 'print()', lulus pernyataan 'builder: ready' bersama-sama dengan 'flush' dan tetapkannya kepada 'True'.


Kami kini mentakrifkan fungsi kedua, 'function2', dan menetapkan kata kunci 'queue' sebagai hujahnya. Kemudian, kami memanggil fungsi 'print()' sambil menghantar laporan menyatakan 'User: Running' dan 'flush'  yang ditetapkan kepada 'True'. Kami memulakan operasi 'function2' menggunakan keadaan while true untuk mengeluarkan data daripada baris gilir dan memasukkannya ke dalam pembolehubah 'item' yang baru dibuat. Kemudian, kami menggunakan syarat 'jika', 'item ialah Tiada', untuk mengganggu gelung jika keadaan itu benar. Jika tiada item tersedia, ia berhenti dan meminta pengguna untuk satu. Tugas menghentikan gelung dan tamat dalam kes ini jika item yang diperoleh daripada nilai adalah batal. Kemudian, dalam langkah berikut, kami memanggil fungsi 'print()' dan menyediakan laporan 'Pengguna: sedia' dan parameter 'flush=True' kepadanya.


Kemudian, kami memasuki proses utama menggunakan 'If-name = main_'. Kami membuat baris gilir dengan memanggil kaedah 'baris gilir()' dan menyimpannya dalam pembolehubah 'baris gilir'. Seterusnya, kami membuat proses dengan memanggil fungsi pengguna 'fungsi2'. Untuk ini, kami memanggil kelas 'proses'. Di dalamnya, kami lulus 'target=function2' untuk memanggil fungsi dalam proses, lulus hujah 'queue', dan menyimpannya dalam pembolehubah 'User_process'. Proses itu kemudiannya bermula dengan memanggil kaedah 'mula()' dengan pembolehubah 'User_ process'. Kami kemudian mengulangi prosedur yang sama untuk memanggil 'fungsi1' dalam proses dan meletakkannya dalam pembolehubah 'proses pembina'. Kemudian, kami memanggil proses dengan kaedah 'sertai()' untuk menunggu pelaksanaan.


Setelah ia dibentangkan, anda boleh melihat penyataan kedua-dua fungsi dalam output. Ia memaparkan item yang kami tambah menggunakan 'put()' dan 'get()' dengan menggunakan kaedah 'get()', masing-masing.

Kesimpulan

Kami belajar tentang baris gilir berbilang pemprosesan Python dalam artikel ini. Kami menggunakan ilustrasi yang diberikan. Pada mulanya, kami menerangkan cara membuat baris gilir dalam Python berbilang pemprosesan menggunakan fungsi baris gilir(). Kemudian, kami menggunakan kaedah 'qsize()' untuk menentukan baris gilir . Kami juga  menggunakan kaedah put() dan get() baris gilir. Kelas tidur modul masa dan kelas rawak modul rawak kedua-duanya dibincangkan dalam contoh terakhir.