Можеш ли да набројиш врсте паралелног и конкурентног програмирања реализоване у Python-у?
sobes.tech АИ
Одговор од АИ
У Python-у су реализовани различити типови паралелног и конкурентног програмирања:
-
Многопоточност (threading) — омогућава покретање више нитова унутар једног процеса. Због GIL (Global Interpreter Lock) у CPython, нитови не могу истовремено извршавати байткод, али су погодни за задатке са улазом/излазом.
-
Многопроцесност (multiprocessing) — креира више процеса, сваки са својом меморијом, што омогућава заобилажење GIL ограничења и ефикасно коришћење више језгара CPU.
-
Асимптонско програмирање (asyncio) — засновано на догађајној петљи и корутинама, омогућава писање конкуретног кода без нитова и процеса, ефикасно за I/O-базиране задатке.
-
Concurrent Futures — високог нивоа интерфејс за покретање задатака у нитима или процесима преко ThreadPoolExecutor и ProcessPoolExecutor.
Пример коришћења multiprocessing:
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
with Pool(4) as p:
print(p.map(f, [1, 2, 3, 4]))
Пример asyncio:
import asyncio
async def say_hello():
print('Hello')
await asyncio.sleep(1)
print('World')
asyncio.run(say_hello())