-
-
Notifications
You must be signed in to change notification settings - Fork 321
/
Copy pathresource.py
41 lines (27 loc) · 934 Bytes
/
resource.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""`Resource` provider example."""
import sys
import logging
from concurrent.futures import ThreadPoolExecutor
from dependency_injector import containers, providers
def init_thread_pool(max_workers: int):
thread_pool = ThreadPoolExecutor(max_workers=max_workers)
yield thread_pool
thread_pool.shutdown(wait=True)
class Container(containers.DeclarativeContainer):
config = providers.Configuration()
thread_pool = providers.Resource(
init_thread_pool,
max_workers=config.max_workers,
)
logging = providers.Resource(
logging.basicConfig,
level=logging.INFO,
stream=sys.stdout,
)
if __name__ == "__main__":
container = Container(config={"max_workers": 4})
container.init_resources()
logging.info("Resources are initialized")
thread_pool = container.thread_pool()
thread_pool.map(print, range(10))
container.shutdown_resources()