|
Dasturlash uslublari va paradigmalar
|
bet | 17/30 | Sana | 27.01.2024 | Hajmi | 0,99 Mb. | | #146980 |
Bog'liq PARADIGMA YN2 Pipeline parallelism:
Misol: Tarmoqlangan qurilmalarda uchraydigan bir nechta vazifalarni bajarish.
Parallel algoritmi: Har bir vazifa o'zgartirilgan ma'lumotlarni olib, keyingi vazifaga uzatadi. Bunda, bir vaqtda ishlayotgan vazifa shu vaqtda ishlayotgan ikkinchi vazifaga o'zaro bog'liq emas.
Python misoli:
#code
import concurrent.futures
def vazifa1(malumot):
return malumot * 2
def vazifa2(malumot):
return malumot + 1
if __name__ == "__main__":
ma'lumot = 5
with concurrent.futures.ThreadPoolExecutor() as executor:
future1 = executor.submit(vazifa1, malumot)
future2 = executor.submit(vazifa2, future1.result())
natija = future2.result()
print(natija)
Bu misollar, parallel algoritmlarni amaliy ko'rish uchun mo'ljallangandir. Real dasturlashda parallel ishlashdan foydalanish uchun, kompyuter arxitekturasi, vazifalarning jins va xususiyatlariga qarab eng optimal parallel algoritmini tanlanadi.
Amaliy dasturlash tizimlari.
Amaliy dasturlash tizimlarida parallel ishlashni ilustratsiya qilish uchun quyidagi misolni ko'rishimiz mumkin. Ushbu misol, bir matnning har bir belgisini qanday kodlarini aniqlash va hisoblashda parallel ishlashni ko'rsatadi. Biz bitta matnni qanday ishlab chiqish mumkinligini parallel ravishda tekshirib ko'ramiz.
#code
import concurrent.futures
def belgi_hisobla(belgi):
# Har bir belgini kodini aniqlash va uni sona qo'shish
kod = ord(belgi)
return f"{belgi}: {kod + 1}"
if __name__ == "__main__":
matn = "Salom, Dunyo!"
with concurrent.futures.ThreadPoolExecutor() as executor:
# Matndagi har bir belgini parallel ravishda tekshirib ko'rish
natijalar = list(executor.map(belgi_hisobla, matn))
for natija in natijalar:
print(natija)
Bu dasturda, matndagi har bir belgini parallel ravishda tekshirib, belgining kodini va uni birga sonini hisoblaydi. concurrent.futures.ThreadPoolExecutor() orqali parallel ishlovchi xizmat qilinadi. executor.map() metodi, har bir belgi uchun belgi_hisobla funksiyasini chaqirib, natijalarni olishga imkon beradi.
Bu misol orqali, parallel ishlashni o'rganish, optimallashtirish va amaliy dasturlarda qanday qo'llab-quvvatlashini ko'rish mumkin.
|
| |