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
ThreadPoolExecutor for Basic Task Executionfrom 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
ProcessPoolExecutor for CPU-Intensive Tasksfrom 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
4. Using as_completed to Process Results as They Finish
as_completed to Process Results as They Finish5. Handling Exceptions in Concurrent Tasks
6. Cancelling Pending Tasks
7. Using ProcessPoolExecutor for Parallel File I/O
ProcessPoolExecutor for Parallel File I/O8. Mixing ThreadPoolExecutor with I/O Bound Tasks
9. Timing Concurrent Tasks
10. Using ProcessPoolExecutor for Large Dataset Processing
ProcessPoolExecutor for Large Dataset ProcessingThese 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