• Amaliy dasturlash tizimlari.
  • Dasturlash uslublari va paradigmalar




    Download 0,97 Mb.
    bet17/30
    Sana26.01.2024
    Hajmi0,97 Mb.
    #146384
    1   ...   13   14   15   16   17   18   19   20   ...   30
    Bog'liq
    PARADIGMA YN

    2 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.



    1. Download 0,97 Mb.
    1   ...   13   14   15   16   17   18   19   20   ...   30




    Download 0,97 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Dasturlash uslublari va paradigmalar

    Download 0,97 Mb.