|
Men dasturlashda python tilidan foydalanganim sababli, shu tilda misollar keltiraman
|
bet | 16/30 | Sana | 26.01.2024 | Hajmi | 0,97 Mb. | | #146384 |
Bog'liq PARADIGMA YNMen 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:
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)
|
| |