• 20. Parallel algoritmlar. Amaliy dasturlash tizimlari. Parralel algoritmlar.
  • Men dasturlashda python tilidan foydalanganim sababli, shu tilda misollar keltiraman




    Download 0,99 Mb.
    bet16/30
    Sana27.01.2024
    Hajmi0,99 Mb.
    #146980
    1   ...   12   13   14   15   16   17   18   19   ...   30
    Bog'liq
    PARADIGMA YN

    Men dasturlashda python tilidan foydalanganim sababli, shu tilda misollar keltiraman.
    Python tilida parallel dasturlashni o'rganish uchun, multiprocessing va concurrent.futures kabi modullarni ishlatish mumkin. Bu modullar orqali, kompyuterda bir nechta vazifalarni parallel ravishda bajarish mumkin.
    Quyidagi misolni ko'rib chiqamiz. Ushbu misol, concurrent.futures modulini ishlatish orqali bir nechta sonni darajasini hisoblashni ilustratsiya qiladi.
    # code
    import concurrent.futures
    import math
    def daraja_hisobla(x):
    print(f"{x} ning darajasi: {math.pow(x, 2)}")
    if __name__ == "__main__":
    sonlar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    # O'zgaruvchilar turlariga qarab ish boshlashing
    with concurrent.futures.ThreadPoolExecutor() as executor:
    # submit metodi orqali har bir son uchun daraja_hisobla funksiyasini chaqirish
    # va natijalarni future_qatorida qaytaradi
    futures = [executor.submit(daraja_hisobla, son) for son in sonlar]
    # as_completed metodi orqali natijalar bo'ylanish tartibida olish
    for future in concurrent.futures.as_completed(futures):
    # Natija olish
    result = future.result()
    print(result)
    20. Parallel algoritmlar. Amaliy dasturlash tizimlari.
    Parralel algoritmlar.
    Parallel algoritmlarni amalga oshirish uchun parallel jarayonlarni tashkil etishda duch keladigan echimlarning umumiy ko‘rinishi ko‘p protsessorli arxitektura va tizimlarning xilma-xilligi haqida bir oz tasavvur beradi:
    - ko‘p protsessorlar bo‘lishi mumkin va ular turli xil buyruq tizimlariga ega bo‘lishi mumkin;
    - protsessorlar avtonom tarzda ishlashi yoki umumiy ishni bajarish uchun birgalikda ishlashi mumkin;
    - alohida protsessorlar foydali ishlamasdan ishlamay qolishi mumkin;
    - protsessorlar o‘z lokal xotirasiga ega va umumiy xotirada ishlashi mumkin;
    - qo‘shni protsessorlar o‘ta tezkor ma’lumotlar almashinuvi uchun moslashtirilishi mumkin;
    - protsessorlar o‘rtasida harakatlarning taqsimlanishi dastur tomonidan belgilanishi yoki hisob-kitoblarning ma’lum bir modelini qo‘llabquvvatlaydigan nazoratchi tomonidan amalga oshirilishi mumkin.
    Quyidagi misollar parallel algoritmlashning ba'zi turlarini ko'rsatadi:

    1. MapReduce:

      • Misol: Ma'lum bir ma'lumot jadvali ichidagi barcha elementlarni qo'shish.

      • Parallel algoritmi: Elementlarning yig'indisi (reduce operatsiyasi) parallel ravishda bajariladi. Har bir qurilma bir qismi bilan shug'ullanadi.

      • Python misoli:

    #code
    from functools import reduce
    from multiprocessing import Pool
    def qoshish(x):
    return sum(x)
    if __name__ == "__main__":
    malumotlar = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    with Pool() as pool:
    natija = reduce(lambda x, y: x + y, pool.map(qoshish, malumotlar))
    print(natija)

    Download 0,99 Mb.
    1   ...   12   13   14   15   16   17   18   19   ...   30




    Download 0,99 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Men dasturlashda python tilidan foydalanganim sababli, shu tilda misollar keltiraman

    Download 0,99 Mb.