mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-03-28 22:04:25 +03:00
Update singleton_thread_locals.py (#252)
* Update singleton_thread_locals.py fix * Update singleton_thread_locals.py * Update singleton_thread_locals.py
This commit is contained in:
parent
a0d4af15e9
commit
c136663071
|
@ -1,26 +1,26 @@
|
|||
"""`ThreadLocalSingleton` providers example."""
|
||||
|
||||
import threading
|
||||
import Queue
|
||||
import queue
|
||||
|
||||
import dependency_injector.providers as providers
|
||||
|
||||
|
||||
def example(example_object, queue):
|
||||
def example(example_object, queue_object):
|
||||
"""Put provided object in the provided queue."""
|
||||
queue.put(example_object)
|
||||
queue_object.put(example_object)
|
||||
|
||||
|
||||
# Create thread-local singleton provider for some object (main thread):
|
||||
thread_local_object = providers.ThreadLocalSingleton(object)
|
||||
|
||||
# Create singleton provider for thread-safe queue:
|
||||
queue = providers.Singleton(Queue.Queue)
|
||||
queue_factory = providers.ThreadSafeSingleton(queue.Queue)
|
||||
|
||||
# Create callable provider for example(), inject dependencies:
|
||||
example = providers.DelegatedCallable(example,
|
||||
example_object=thread_local_object,
|
||||
queue=queue)
|
||||
queue_object=queue_factory)
|
||||
|
||||
# Create factory provider for threads that are targeted to execute example():
|
||||
thread_factory = providers.Factory(threading.Thread,
|
||||
|
@ -43,8 +43,8 @@ if __name__ == '__main__':
|
|||
# Making some asserts (main thread):
|
||||
all_objects = set()
|
||||
|
||||
while not queue().empty():
|
||||
all_objects.add(queue().get())
|
||||
while not queue_factory().empty():
|
||||
all_objects.add(queue_factory().get())
|
||||
|
||||
assert len(all_objects) == len(threads)
|
||||
# Queue contains same number of objects as number of threads where
|
||||
|
|
Loading…
Reference in New Issue
Block a user