A ThreadPoolExecutor that runs functions with the context of the caller.This is a drop-in replacement for concurrent.futures.ThreadPoolExecutor that ensures weave calls behave as expected inside the executor. Weave requires certain contextvars to be set (see call_context.py), but new threads do not automatically copy context from the parent, which can cause the call context to be lost — not good! This class automates contextvar copying so using this executor “just works” as the user probably expects.You can achieve the same effect without this class by instead writing:
Report incorrect code
Copy
Ask AI
with concurrent.futures.ThreadPoolExecutor() as executor: contexts = [copy_context() for _ in range(len(vals))] def _wrapped_fn(*args): return contexts.pop().run(fn, *args) executor.map(_wrapped_fn, vals)
A Thread that runs functions with the context of the caller.This is a drop-in replacement for threading.Thread that ensures calls behave as expected inside the thread. Weave requires certain contextvars to be set (see call_context.py), but new threads do not automatically copy context from the parent, which can cause the call context to be lost — not good! This class automates contextvar copying so using this thread “just works” as the user probably expects.You can achieve the same effect without this class by instead writing:
A boolean value indicating whether this thread is a daemon thread.This must be set before start() is called, otherwise RuntimeError is raised. Its initial value is inherited from the creating thread; the main thread is not a daemon thread and therefore all threads created in the main thread default to daemon = False.The entire Python program exits when only daemon threads are left.
Thread identifier of this thread or None if it has not been started.This is a nonzero integer. See the get_ident() function. Thread identifiers may be recycled when a thread exits and another thread is created. The identifier is available even after the thread has exited.
A string used for identification purposes only.It has no semantics. Multiple threads may be given the same name. The initial name is set by the constructor.
Native integral thread ID of this thread, or None if it has not been started.This is a non-negative integer. See the get_native_id() function. This represents the Thread ID as reported by the kernel.