python multiprocessing va parallel dasturlash

DOCX 16 pages 1.7 MB Free download

Page preview (5 pages)

Scroll down 👇
1 / 16
20 - ma’ruza pythonda parallel va ko‘p oqimli dasturlash. pythonda multiprocessing bilan ishlash reja: 1. oddiy jarayon yaratish 2. jarayonlar havzasidan foydalanish 3. jarayonlar orasida ma’lumot almashinish 4. foydalanilgan adabiyotlar python-da multiprocessing — bu python dasturlash tilida bir nechta jarayonlarni parallel ishlatish imkonini beruvchi kutubxona. u ko'p yadroli protsessorlardan samarali foydalanish uchun juda foydalidir, chunki pythonning global interpreter lokkini (gil) hisobga olgan holda, multi-threading ko'pincha bitta yadroda ishlashga cheklangan. multiprocessing esa, bir nechta jarayonlarni paralel tarzda bajarib, har bir jarayon o'zining mustaqil yadro resurslarini ishlatishini ta'minlaydi. 1. multiprocessing kutubxonasi bilan tanishtirish multiprocessing kutubxonasi yordamida parallel dasturlar yaratish mumkin. bu kutubxona, ko'p jarayonlar (processes) yaratish, ularga ishlarni taqsimlash va ularning natijalarini olish uchun qulay interfeysni taqdim etadi. 2. basic multiprocessing example keling, birinchi oddiy misolni ko'rib chiqaylik. bu misolda bizda ikkita jarayon bo'ladi va ular bir vaqtning o'zida ishlaydi. pythonning ko'p ishlov berish imkoniyatlaridan foydalanish uchun ideal muhitni ta'minlaydi. yuqori unumdor …
2 / 16
hbu o'quv qo'llanma pythonda multiprocessing qanday ishlashi va undan qanday samarali foydalanish haqida soddalashtirilgan tushuntirish beradi. python global tarjimon blokirovkasidan (gil) foydalanadi, bu esa bir vaqtning o'zida python bayt-kodini bajarishga faqat bitta ipni beradi. bu protsessor bilan bog'liq vazifalar uchun ko'p ish zarralaridan foydalanishni muammoli qiladi, chunki hatto ko'p yadroli protsessorda ham bir vaqtning o'zida faqat bitta ip ishlay oladi. ko'p ishlov berish esa har bir jarayon uchun alohida xotira maydonlarini yaratadi, bu esa har bir jarayonning parallel ishlashi va bir nechta protsessor yadrolaridan to'liq foydalanish imkonini beradi. multiprocessing va multithreading o'rtasidagi asosiy farqlar: · ko'p ishlov berish: gilni chetlab o'tib, haqiqiy parallelizmga imkon beruvchi har bir jarayon uchun alohida xotira maydonlaridan foydalanadi. · multithreading: mavzular orasidagi xotira maydonini baham ko'radi, lekin python gil bilan cheklangan, bu uni kiritish/chiqarish bilan bog'langan vazifalar (masalan, faylni o'qish/yozish yoki tarmoq so'rovlari) uchun ko'proq moslashtiradi. multithreading moduli bilan ishlashni boshlash python-ning multiprocessing moduli bir …
3 / 16
lumotlar uzatish uchun ishlatiladi. pool: bir nechta jarayonlarni birlashtirib, parallel vazifalarni bajaradi. pipe: jarayonlar o'rtasida ikki tomonlama aloqa o'rnatish imkonini beradi. start() metodi jarayonni ishga tushiradi join() esa jarayon tugashini kutadi. pool.map() funksiyasi ro'yxatni parallel ravishda qayta ishlash uchun ishlatiladi. none() qiymati orqali consumer jarayonini to'xtatishga imkon beradi. lock() yordamida jarayonlar o'rtasida kritik bo'limga bir vaqtning o'zida kirish cheklangan. manager() yordamida turli jarayonlar o'rtasida umumiy ma'lumotlar strukturalarini (masalan, ro'yxatlar, lug‘atlar) boshqarish mumkin. manager obyektlari jarayonlar o'rtasida bo'lishi mumkin, ya'ni ularni barcha jarayonlar o'zaro o'qiydigan va yozadigan qilib ishlatish mumkin. process.daemon = true: jarayonni daemon sifatida belgilash imkonini beradi. apply() – bu blokirovka qiluvchi metod bo'lib, u barcha jarayonlar bajarilgunga qadar kutadi va natijani qaytaradi. apply_async() – bu asinxron metod bo'lib, u natijani darhol qaytaradi va jarayonlarni parallel ravishda ishlashini kutmasdan davom ettiradi. event.set()- signal yuboriladi va worker jarayoni davom etadi. semaphore(2)- faqat 2 ta jarayon bir vaqtda ishlashiga ruxsat beradi. …
4 / 16
ue jarayonni daemon sifatida belgilash imkonini beradi. apply() bu blokirovka qiluvchi metod bo'lib, u barcha jarayonlar bajarilgunga qadar kutadi va natijani qaytaradi. apply_async() bu asinxron metod bo'lib, u natijani darhol qaytaradi va jarayonlarni parallel ravishda ishlashini kutmasdan davom ettiradi. event.set() signal yuboriladi va worker jarayoni davom etadi semaphore(2) faqat 2 ta jarayon bir vaqtda ishlashiga ruxsat beradi. 1.start() – jarayonni ishga tushuradi. 2. join() – jarayonni tugashini kutadi misol: import multiprocessing import os def worker(num): print(f"jarayon id: {os.getpid()} | ishchi vazifa: {num}") if __name__ == "__main__": processes = [] for i in range(5): process = multiprocessing.process(target=worker, args=(i,)) processes.append(process) process.start() for process in processes: process.join() multiprocessing pool bilan ishlash agar bir xil vazifani bir nechta jarayonlar orasida parallel ravishda bajarishni xohlasangiz, pool obyektidan foydalanishingiz mumkin. pool.map()- funksiyasi ro'yxatni parallel ravishda qayta ishlash uchun ishlatiladi misol: import multiprocessing def square(number): return number * number if __name__ == "__main__": with multiprocessing.pool(processes=4) as pool: …
5 / 16
r_process.start() producer_process.join() queue.put(none) consumer_process.join() natija: muammolar va sinxronlash: multiprocessing jarayonlari bir-biridan mustaqil ishlaydi, shuning uchun resurslar (masalan, fayl tizimi yoki ma'lumotlar bazasi) bilan ishlashda sinxronizatsiya (masalan, lock yoki semaphore) talab qilinishi mumkin. lock()- yordamida jarayonlar o'rtasida kritik bo'limga bir vaqtning o'zida kirish cheklangan. misol: import multiprocessing import time def critical_section(lock, num): with lock: print(f"jarayon {num} kritik bo'limda ishlayapti") time.sleep(1) if __name__ == "__main__": lock = multiprocessing.lock() processes = [] for i in range(5): process = multiprocessing.process(target=critical_section, args=(lock, i)) processes.append(process) process.start() for process in processes: process.join() jarayonlar o'rtasida ma'lumot uzatish multiprocessing moduli jarayonlar o'rtasida ma'lumot uzatishni ta'minlash uchun bir nechta vositalarni taqdim etadi. queue, pipe, va value/array kabi obyektlar jarayonlar o'rtasida ma'lumot almashish imkonini beradi. queue(): jarayonlar o'rtasida ma'lumotlar uzatish uchun ishlatiladi pipe(): jarayonlar o'rtasida ikki tomonlama aloqa o'rnatish imkonini beradi. misol: import multiprocessing import time def producer(queue): for i in range(5): time.sleep(1) print(f"prodyuser {i} ni qo'shdi") queue.put(i) def consumer(queue): while …

Want to read more?

Download all 16 pages for free via Telegram.

Download full file

About "python multiprocessing va parallel dasturlash"

20 - ma’ruza pythonda parallel va ko‘p oqimli dasturlash. pythonda multiprocessing bilan ishlash reja: 1. oddiy jarayon yaratish 2. jarayonlar havzasidan foydalanish 3. jarayonlar orasida ma’lumot almashinish 4. foydalanilgan adabiyotlar python-da multiprocessing — bu python dasturlash tilida bir nechta jarayonlarni parallel ishlatish imkonini beruvchi kutubxona. u ko'p yadroli protsessorlardan samarali foydalanish uchun juda foydalidir, chunki pythonning global interpreter lokkini (gil) hisobga olgan holda, multi-threading ko'pincha bitta yadroda ishlashga cheklangan. multiprocessing esa, bir nechta jarayonlarni paralel tarzda bajarib, har bir jarayon o'zining mustaqil yadro resurslarini ishlatishini ta'minlaydi. 1. multiprocessing kutubxonasi bilan tanishtirish multiprocessing kutubxonas...

This file contains 16 pages in DOCX format (1.7 MB). To download "python multiprocessing va parallel dasturlash", click the Telegram button on the left.

Tags: python multiprocessing va paral… DOCX 16 pages Free download Telegram