##// END OF EJS Templates
worker: ability to disable thread unsafe tasks...
worker: ability to disable thread unsafe tasks The worker on Windows is implemented using a thread pool. If worker tasks are not thread safe, badness can occur. In addition, if tasks are executing CPU bound code and holding onto the GIL, there will be non-substantial overhead in Python context switching between active threads. This can result in significant slowdowns of tasks. This commit teaches the code for determining whether to use a worker to take thread safety into account. Effectively, thread unsafe tasks don't use the thread-based worker on Windows. Differential Revision: https://phab.mercurial-scm.org/D3962

File last commit:

r37644:0a9c0d34 default
r38754:ef3838a4 default
Show More
__init__.py
27 lines | 608 B | text/x-python | PythonLexer
Gregory Szorc
thirdparty: vendor futures 3.2.0...
r37641 # Copyright 2009 Brian Quinlan. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.
"""Execute computations asynchronously using threads or processes."""
Gregory Szorc
futures: switch to absolute and relative imports...
r37644 from __future__ import absolute_import
Gregory Szorc
thirdparty: vendor futures 3.2.0...
r37641 __author__ = 'Brian Quinlan (brian@sweetapp.com)'
Gregory Szorc
futures: switch to absolute and relative imports...
r37644 from ._base import (
FIRST_COMPLETED,
FIRST_EXCEPTION,
ALL_COMPLETED,
CancelledError,
TimeoutError,
Future,
Executor,
wait,
as_completed,
)
from .thread import ThreadPoolExecutor
Gregory Szorc
thirdparty: vendor futures 3.2.0...
r37641
try:
Gregory Szorc
futures: switch to absolute and relative imports...
r37644 from .process import ProcessPoolExecutor
Gregory Szorc
thirdparty: vendor futures 3.2.0...
r37641 except ImportError:
# some platforms don't have multiprocessing
pass