Concurrent Futures

Advanced PythonConcurrencyFree Lesson

Advertisement

Introduction

Concurrent.futures provides high-level interface for asynchronous task execution.

ThreadPoolExecutor

from concurrent.futures import ThreadPoolExecutor, as_completed
import time

def task(n):
    time.sleep(1)
    return n ** 2

with ThreadPoolExecutor(max_workers=4) as executor:
    futures = [executor.submit(task, i) for i in range(10)]
    
    for future in as_completed(futures):
        print(f"Result: {future.result()}")

ProcessPoolExecutor

from concurrent.futures import ProcessPoolExecutor

def cpu_intensive(n):
    return sum(i ** 2 for i in range(1000000))

with ProcessPoolExecutor(max_workers=4) as executor:
    results = list(executor.map(cpu_intensive, range(10)))

Submit and Future

from concurrent.futures import ThreadPoolExecutor

executor = ThreadPoolExecutor(max_workers=4)

future = executor.submit(pow, 2, 3)
print(future.result())  # 8

executor.shutdown(wait=True)

Practice Problems

  1. Parallelize web scraping
  2. Process images concurrently
  3. Download multiple files
  4. Use ProcessPoolExecutor for CPU tasks
  5. Handle exceptions in futures

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement