def skipIfGraalPythonWitoutThreads(reason="Threading not yet enabled"): try: import _sysconfig as syscfg except Exception: import sysconfig as syscfg return skipIf( sys.implementation.name == 'graalpython' and not syscfg.get_config_var('WITH_THREAD'), reason)
MACOS = sys.platform == "darwin" verbosity = '--verbose' if sys.flags.verbose else '--quiet' darwin_native = MACOS and __graalpython__.platform_id == "native" relative_rpath = "@loader_path" if darwin_native else r"$ORIGIN" so_ext = get_config_var("EXT_SUFFIX") SOABI = get_config_var("SOABI") is_managed = 'managed' in SOABI lib_ext = 'dylib' if MACOS else 'so' # configure logger logger = logging.getLogger(__name__) logging.basicConfig(format='%(message)s', level=logging.DEBUG if sys.flags.verbose else logging.ERROR) threaded = _sysconfig.get_config_var("WITH_THREAD") if threaded: logger.debug("building C API threaded") import threading import queue class SimpleThreadPool: def __init__(self, n=None): self.n = n if n else os.cpu_count() self.running = False self.started = False self.finished_semaphore = None self.task_queue = queue.SimpleQueue() self.result_queue = queue.SimpleQueue()
def open(*args, **kwargs): return _pyio.open(*args, **kwargs) for module in [_io, io]: setattr(module, 'open', open) setattr(module, 'TextIOWrapper', _pyio.TextIOWrapper) setattr(module, 'IncrementalNewlineDecoder', _pyio.IncrementalNewlineDecoder) setattr(module, 'BufferedRandom', _pyio.BufferedRandom) setattr(module, 'BufferedRWPair', _pyio.BufferedRWPair) setattr(module, 'BufferedWriter', _pyio.BufferedWriter) setattr(module, 'BufferedReader', _pyio.BufferedReader) setattr(module, 'StringIO', _pyio.StringIO) setattr(module, '_IOBase', _pyio.IOBase) setattr(module, 'RawIOBase', _pyio.RawIOBase) setattr(module, 'FileIO', _pyio.FileIO) setattr(module, 'BytesIO', _pyio.BytesIO) setattr(module, '_TextIOBase', _pyio.TextIOBase) setattr(builtins, 'open', open) # ---------------------------------------------------------------------------------------------------------------------- # # patch _thread (needed for setuptools if threading is disabled) # # ---------------------------------------------------------------------------------------------------------------------- if not _sysconfig.get_config_var('WITH_THREAD'): import _dummy_thread sys.modules["_thread"] = _dummy_thread
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. import random import re import sys try: import _sysconfig as syscfg except Exception: import sysconfig as syscfg if syscfg.get_config_var('WITH_THREAD'): import threading import unittest from test import support from _thread import start_new_thread thread = support.import_module('_thread') import time import weakref NUMTASKS = 10 NUMTRIPS = 3 POLL_SLEEP = 0.010 # seconds = 10 ms _print_mutex = thread.allocate_lock()