118. Concurrency with concurrent.futures
Here are 10 Python snippets that demonstrate concurrency using the concurrent.futures module with ThreadPoolExecutor and ProcessPoolExecutor.
1. Using ThreadPoolExecutor for Basic Task Execution
Copy
from concurrent.futures import ThreadPoolExecutor
def task(n):
return f"Task {n} completed."
with ThreadPoolExecutor(max_workers=3) as executor:
results = list(executor.map(task, range(5)))
print(results)2. Using ProcessPoolExecutor for CPU-Intensive Tasks
Copy
from concurrent.futures import ProcessPoolExecutor
import math
def compute_factorial(n):
return math.factorial(n)
with ProcessPoolExecutor(max_workers=3) as executor:
results = list(executor.map(compute_factorial, [5, 10, 15, 20]))
print(results)3. Submitting Tasks Individually
Copy
4. Using as_completed to Process Results as They Finish
Copy
5. Handling Exceptions in Concurrent Tasks
Copy
6. Cancelling Pending Tasks
Copy
7. Using ProcessPoolExecutor for Parallel File I/O
Copy
8. Mixing ThreadPoolExecutor with I/O Bound Tasks
Copy
9. Timing Concurrent Tasks
Copy
10. Using ProcessPoolExecutor for Large Dataset Processing
Copy
These snippets demonstrate the power and versatility of concurrent.futures for handling concurrency in both I/O-bound tasks (using ThreadPoolExecutor) and CPU-bound tasks (using ProcessPoolExecutor).
Last updated