並行処理と並列処理
Python Published at April 8, 2025, 2:11 p.m. by admin@senrigan.orgconcurrencyとparallelismの違いについて
並行処理 (concurrency)
- 1CPUで擬似的にタスク同時処理
- スレッド切り替え、スケジューリング
- asyncio, threading
- 使いどころ:I/O-boundな処理
- DBアクセス、ネットワークの待ち時間
- コンテキストスイッチ
import asyncio
async def task(n):
await asyncio.sleep(1)
print(2**n)
async def main():
await asyncio.gather(*(task(i) for i in range(1,5)))
asyncio.run(main())
並列処理 (parallelism)
- マルチコアで物理的にタスク同時処理
- multiprocessing
- 使いどころ:CPU-boundな処理
- デッドロック、リソースの競合 (race condition)
from multiprocessing import Pool
def task(n):
return 2**n
with Pool(4) as p:
res = p.map(task, range(1,5))
print(res)