• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Python sys.setswitchinterval函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中sys.setswitchinterval函数的典型用法代码示例。如果您正苦于以下问题:Python setswitchinterval函数的具体用法?Python setswitchinterval怎么用?Python setswitchinterval使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了setswitchinterval函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: setUp

 def setUp(self):
     # Set a very small check interval, this will make it more likely
     # that the interpreter crashes when threading is done incorrectly.
     if sys.version_info[:2] >= (3, 2):
         self._int = sys.getswitchinterval()
         sys.setswitchinterval(0.0000001)
     else:
         self._int = sys.getcheckinterval()
         sys.setcheckinterval(1)
开发者ID:aosm,项目名称:pyobjc,代码行数:9,代码来源:test_threading.py


示例2: test_trashcan_threads

    def test_trashcan_threads(self):
        # Issue #13992: trashcan mechanism should be thread-safe
        NESTING = 60
        N_THREADS = 2

        def sleeper_gen():
            """A generator that releases the GIL when closed or dealloc'ed."""
            try:
                yield
            finally:
                time.sleep(0.000001)

        class C(list):
            # Appending to a list is atomic, which avoids the use of a lock.
            inits = []
            dels = []
            def __init__(self, alist):
                self[:] = alist
                C.inits.append(None)
            def __del__(self):
                # This __del__ is called by subtype_dealloc().
                C.dels.append(None)
                # `g` will release the GIL when garbage-collected.  This
                # helps assert subtype_dealloc's behaviour when threads
                # switch in the middle of it.
                g = sleeper_gen()
                next(g)
                # Now that __del__ is finished, subtype_dealloc will proceed
                # to call list_dealloc, which also uses the trashcan mechanism.

        def make_nested():
            """Create a sufficiently nested container object so that the
            trashcan mechanism is invoked when deallocating it."""
            x = C([])
            for i in range(NESTING):
                x = [C([x])]
            del x

        def run_thread():
            """Exercise make_nested() in a loop."""
            while not exit:
                make_nested()

        old_switchinterval = sys.getswitchinterval()
        sys.setswitchinterval(1e-5)
        try:
            exit = []
            threads = []
            for i in range(N_THREADS):
                t = threading.Thread(target=run_thread)
                threads.append(t)
            with start_threads(threads, lambda: exit.append(1)):
                time.sleep(1.0)
        finally:
            sys.setswitchinterval(old_switchinterval)
        gc.collect()
        self.assertEqual(len(C.inits), len(C.dels))
开发者ID:MaximVanyushkin,项目名称:Sharp.RemoteQueryable,代码行数:57,代码来源:test_gc.py


示例3: tidy_up

 def tidy_up():
     """
     Put the bytecode back to how it was. Good as new.
     """
     if sys.version_info[0] < 3:
         sys.setcheckinterval(old_check_interval)
     else:
         sys.setswitchinterval(old_check_interval)
     for i in range(3):
         pb[where + i][0] = orig_bytes[i]
开发者ID:S-Bahrasemani,项目名称:rootpy,代码行数:10,代码来源:magic.py


示例4: release_priority_execution

def release_priority_execution(p):
    sys.setcheckinterval(100)
    if sys.version_info > (3, 0, 0):
        sys.setswitchinterval(0.005)
    try:
        if platform.system() == "Windows":
            p.nice(psutil.NORMAL_PRIORITY_CLASS)
        else:
            p.nice(5)
    except psutil.AccessDenied:
        pass
    gc.enable()
开发者ID:littleskunk,项目名称:pyp2p,代码行数:12,代码来源:lib.py


示例5: test_main

def test_main():
    old_switchinterval = None
    try:
        old_switchinterval = sys.getswitchinterval()
        sys.setswitchinterval(1e-5)
    except AttributeError:
        pass
    try:
        run_unittest(ThreadedImportTests)
    finally:
        if old_switchinterval is not None:
            sys.setswitchinterval(old_switchinterval)
开发者ID:M31MOTH,项目名称:cpython,代码行数:12,代码来源:test_threaded_import.py


示例6: test_thread_safety_during_modification

    def test_thread_safety_during_modification(self):
        hosts = range(100)
        policy = RoundRobinPolicy()
        policy.populate(None, hosts)

        errors = []

        def check_query_plan():
            try:
                for i in xrange(100):
                    list(policy.make_query_plan())
            except Exception as exc:
                errors.append(exc)

        def host_up():
            for i in xrange(1000):
                policy.on_up(randint(0, 99))

        def host_down():
            for i in xrange(1000):
                policy.on_down(randint(0, 99))

        threads = []
        for i in range(5):
            threads.append(Thread(target=check_query_plan))
            threads.append(Thread(target=host_up))
            threads.append(Thread(target=host_down))

        # make the GIL switch after every instruction, maximizing
        # the chance of race conditions
        check = six.PY2 or '__pypy__' in sys.builtin_module_names
        if check:
            original_interval = sys.getcheckinterval()
        else:
            original_interval = sys.getswitchinterval()

        try:
            if check:
                sys.setcheckinterval(0)
            else:
                sys.setswitchinterval(0.0001)
            map(lambda t: t.start(), threads)
            map(lambda t: t.join(), threads)
        finally:
            if check:
                sys.setcheckinterval(original_interval)
            else:
                sys.setswitchinterval(original_interval)

        if errors:
            self.fail("Saw errors: %s" % (errors,))
开发者ID:Adirio,项目名称:python-driver,代码行数:51,代码来源:test_policies.py


示例7: setUp

 def setUp(self):
     """
     Reduce the CPython check interval so that thread switches happen much
     more often, hopefully exercising more possible race conditions.  Also,
     delay actual test startup until the reactor has been started.
     """
     if _PY3:
         if getattr(sys, 'getswitchinterval', None) is not None:
             self.addCleanup(sys.setswitchinterval, sys.getswitchinterval())
             sys.setswitchinterval(0.0000001)
     else:
         if getattr(sys, 'getcheckinterval', None) is not None:
             self.addCleanup(sys.setcheckinterval, sys.getcheckinterval())
             sys.setcheckinterval(7)
开发者ID:JohnDoes95,项目名称:project_parser,代码行数:14,代码来源:test_threadable.py


示例8: test_main

def test_main():
    old_switchinterval = None
    # Issue #15599: FreeBSD/KVM cannot handle gil_interval == 1.
    new_switchinterval = 0.00001 if 'freebsd' in sys.platform else 0.00000001
    try:
        old_switchinterval = sys.getswitchinterval()
        sys.setswitchinterval(new_switchinterval)
    except AttributeError:
        pass
    try:
        run_unittest(ThreadedImportTests)
    finally:
        if old_switchinterval is not None:
            sys.setswitchinterval(old_switchinterval)
开发者ID:litzomatic,项目名称:cpython,代码行数:14,代码来源:test_threaded_import.py


示例9: test_switchinterval

 def test_switchinterval(self):
     self.assertRaises(TypeError, sys.setswitchinterval)
     self.assertRaises(TypeError, sys.setswitchinterval, "a")
     self.assertRaises(ValueError, sys.setswitchinterval, -1.0)
     self.assertRaises(ValueError, sys.setswitchinterval, 0.0)
     orig = sys.getswitchinterval()
     # sanity check
     self.assertTrue(orig < 0.5, orig)
     try:
         for n in 0.00001, 0.05, 3.0, orig:
             sys.setswitchinterval(n)
             self.assertAlmostEqual(sys.getswitchinterval(), n)
     finally:
         sys.setswitchinterval(orig)
开发者ID:MaximVanyushkin,项目名称:Sharp.RemoteQueryable,代码行数:14,代码来源:test_sys.py


示例10: test_pending_calls_race

 def test_pending_calls_race(self):
     # Issue #14406: multi-threaded race condition when waiting on all
     # futures.
     event = threading.Event()
     def future_func():
         event.wait()
     oldswitchinterval = sys.getswitchinterval()
     sys.setswitchinterval(1e-6)
     try:
         fs = {self.executor.submit(future_func) for i in range(100)}
         event.set()
         futures.wait(fs, return_when=futures.ALL_COMPLETED)
     finally:
         sys.setswitchinterval(oldswitchinterval)
开发者ID:GoMADAO,项目名称:Lessa-PLT,代码行数:14,代码来源:test_concurrent_futures.py


示例11: test_enumerate_after_join

 def test_enumerate_after_join(self):
     # Try hard to trigger #1703448: a thread is still returned in
     # threading.enumerate() after it has been join()ed.
     enum = threading.enumerate
     old_interval = sys.getswitchinterval()
     try:
         for i in range(1, 100):
             sys.setswitchinterval(i * 0.0002)
             t = threading.Thread(target=lambda: None)
             t.start()
             t.join()
             l = enum()
             self.assertNotIn(t, l, "#1703448 triggered after %d trials: %s" % (i, l))
     finally:
         sys.setswitchinterval(old_interval)
开发者ID:pykomke,项目名称:Kurz_Python_KE,代码行数:15,代码来源:test_threading.py


示例12: request_priority_execution

def request_priority_execution():
    gc.disable()
    sys.setcheckinterval(999999999)
    if sys.version_info > (3, 0, 0):
        sys.setswitchinterval(1000)
    p = psutil.Process(os.getpid())
    try:
        if platform.system() == "Windows":
            p.nice(psutil.HIGH_PRIORITY_CLASS)
        else:
            p.nice(10)
    except psutil.AccessDenied:
        pass

    return p
开发者ID:littleskunk,项目名称:pyp2p,代码行数:15,代码来源:lib.py


示例13: test_lru_cache_threaded

    def test_lru_cache_threaded(self):
        n, m = 5, 11

        class C:

            def orig(self, x, y):
                return 3 * x + y

        instance = C()

        f = per_instance_lru_cache(maxsize=n*m)(C.orig)
        hits, misses, maxsize, currsize = f.cache_info(instance)
        self.assertEqual(currsize, 0)

        start = threading.Event()
        def full(k):
            start.wait(10)
            for _ in range(m):
                self.assertEqual(f(instance, k, 0), instance.orig(k, 0))

        def clear():
            start.wait(10)
            for _ in range(2*m):
                f.cache_clear(instance)

        orig_si = sys.getswitchinterval()
        sys.setswitchinterval(1e-6)
        try:
            # create n threads in order to fill cache
            threads = [threading.Thread(target=full, args=[k]) for k in range(n)]
            with support.start_threads(threads):
                start.set()

            hits, misses, maxsize, currsize = f.cache_info(instance)

            # XXX: Why can be not equal?
            self.assertLessEqual(misses, n)
            self.assertLessEqual(hits, m*n - misses)
            self.assertEqual(currsize, n)

            # create n threads in order to fill cache and 1 to clear it
            threads = [threading.Thread(target=clear)]
            threads += [threading.Thread(target=full, args=[k]) for k in range(n)]
            start.clear()
            with support.start_threads(threads):
                start.set()
        finally:
            sys.setswitchinterval(orig_si)
开发者ID:TangledWeb,项目名称:tangled,代码行数:48,代码来源:test_per_instance_lru_cache.py


示例14: setup_gil

def setup_gil():
    """
    Set extremely long GIL release interval to let threads naturally progress
    through CPU-heavy sequences without forcing the wake of another thread that
    may contend trying to run the same CPU-heavy code. For the new-style work,
    this drops runtime ~33% and involuntary context switches by >80%,
    essentially making threads cooperatively scheduled.
    """
    try:
        # Python 2.
        sys.setcheckinterval(100000)
    except AttributeError:
        pass

    try:
        # Python 3.
        sys.setswitchinterval(10)
    except AttributeError:
        pass
开发者ID:toshywoshy,项目名称:ansible,代码行数:19,代码来源:process.py


示例15: adjust_balance_concurrently

    def adjust_balance_concurrently(self, account):
        def transact():
            account.deposit(5)
            time.sleep(0.001)
            account.withdraw(5)

        # Greatly improve the chance of an operation being interrupted
        # by thread switch, thus testing synchronization effectively
        try:
            sys.setswitchinterval(1e-12)
        except AttributeError:
            # For Python 2 compatibility
            sys.setcheckinterval(1)

        threads = [threading.Thread(target=transact) for _ in range(1000)]
        for thread in threads:
            thread.start()
        for thread in threads:
            thread.join()
开发者ID:st3v3nhunt,项目名称:exercism,代码行数:19,代码来源:bank_account_test.py


示例16: test_is_alive_after_fork

    def test_is_alive_after_fork(self):
        # Try hard to trigger #18418: is_alive() could sometimes be True on
        # threads that vanished after a fork.
        old_interval = sys.getswitchinterval()
        self.addCleanup(sys.setswitchinterval, old_interval)

        # Make the bug more likely to manifest.
        sys.setswitchinterval(1e-6)

        for i in range(20):
            t = threading.Thread(target=lambda: None)
            t.start()
            self.addCleanup(t.join)
            pid = os.fork()
            if pid == 0:
                os._exit(1 if t.is_alive() else 0)
            else:
                pid, status = os.waitpid(pid, 0)
                self.assertEqual(0, status)
开发者ID:pykomke,项目名称:Kurz_Python_KE,代码行数:19,代码来源:test_threading.py


示例17: frequent_thread_switches

def frequent_thread_switches():
    """Make concurrency bugs more likely to manifest."""
    interval = None
    if not sys.platform.startswith('java'):
        if hasattr(sys, 'getswitchinterval'):
            interval = sys.getswitchinterval()
            sys.setswitchinterval(1e-6)
        else:
            interval = sys.getcheckinterval()
            sys.setcheckinterval(1)

    try:
        yield
    finally:
        if not sys.platform.startswith('java'):
            if hasattr(sys, 'setswitchinterval'):
                sys.setswitchinterval(interval)
            else:
                sys.setcheckinterval(interval)
开发者ID:BlazeMediaGroup,项目名称:mongo-python-driver,代码行数:19,代码来源:utils.py


示例18: _inject_jump

def _inject_jump(self, where, dest):
    """
    Monkeypatch bytecode at ``where`` to force it to jump to ``dest``.

    Returns function which puts things back to how they were.
    """
    # We're about to do dangerous things to a function's code content.
    # We can't make a lock to prevent the interpreter from using those
    # bytes, so the best we can do is to set the check interval to be high
    # and just pray that this keeps other threads at bay.
    if sys.version_info[0] < 3:
        old_check_interval = sys.getcheckinterval()
        sys.setcheckinterval(2**20)
    else:
        old_check_interval = sys.getswitchinterval()
        sys.setswitchinterval(1000)

    pb = ctypes.pointer(self.ob_sval)
    orig_bytes = [pb[where + i][0] for i in range(3)]

    v = struct.pack("<BH", opcode.opmap["JUMP_ABSOLUTE"], dest)

    # Overwrite code to cause it to jump to the target
    if sys.version_info[0] < 3:
        for i in range(3):
            pb[where + i][0] = ord(v[i])
    else:
        for i in range(3):
            pb[where + i][0] = v[i]

    def tidy_up():
        """
        Put the bytecode back to how it was. Good as new.
        """
        if sys.version_info[0] < 3:
            sys.setcheckinterval(old_check_interval)
        else:
            sys.setswitchinterval(old_check_interval)
        for i in range(3):
            pb[where + i][0] = orig_bytes[i]

    return tidy_up
开发者ID:S-Bahrasemani,项目名称:rootpy,代码行数:42,代码来源:magic.py


示例19: lazy_client_trial

def lazy_client_trial(reset, target, test, get_client, use_greenlets):
    """Test concurrent operations on a lazily-connecting client.

    `reset` takes a collection and resets it for the next trial.

    `target` takes a lazily-connecting collection and an index from
    0 to NTHREADS, and performs some operation, e.g. an insert.

    `test` takes the lazily-connecting collection and asserts a
    post-condition to prove `target` succeeded.
    """
    if use_greenlets and not has_gevent:
        raise SkipTest('Gevent not installed')

    collection = MongoClient(host, port).pymongo_test.test

    # Make concurrency bugs more likely to manifest.
    interval = None
    if not sys.platform.startswith('java'):
        if sys.version_info >= (3, 2):
            interval = sys.getswitchinterval()
            sys.setswitchinterval(1e-6)
        else:
            interval = sys.getcheckinterval()
            sys.setcheckinterval(1)

    try:
        for i in range(NTRIALS):
            reset(collection)
            lazy_client = get_client(
                _connect=False, use_greenlets=use_greenlets)

            lazy_collection = lazy_client.pymongo_test.test
            run_threads(lazy_collection, target, use_greenlets)
            test(lazy_collection)

    finally:
        if not sys.platform.startswith('java'):
            if sys.version_info >= (3, 2):
                sys.setswitchinterval(interval)
            else:
                sys.setcheckinterval(interval)
开发者ID:Bloodevil,项目名称:mongo-python-driver,代码行数:42,代码来源:utils.py


示例20: trial

    def trial(self, reset, target, test):
        """Test concurrent operations on a lazily-connecting client.

        `reset` takes a collection and resets it for the next trial.

        `target` takes a lazily-connecting collection and an index from
        0 to nthreads, and performs some operation, e.g. an insert.

        `test` takes a collection and asserts a post-condition to prove
        `target` succeeded.
        """
        if self.use_greenlets and not has_gevent:
            raise SkipTest("Gevent not installed")

        collection = self._get_client().pymongo_test.test

        # Make concurrency bugs more likely to manifest.
        if not sys.platform.startswith("java"):
            if PY3:
                self.interval = sys.getswitchinterval()
                sys.setswitchinterval(1e-6)
            else:
                self.interval = sys.getcheckinterval()
                sys.setcheckinterval(1)

        try:
            for i in range(self.ntrials):
                reset(collection)
                lazy_client = self._get_client(_connect=False, use_greenlets=self.use_greenlets)

                lazy_collection = lazy_client.pymongo_test.test
                self.run_threads(lazy_collection, target)
                test(collection)

        finally:
            if not sys.platform.startswith("java"):
                if PY3:
                    sys.setswitchinterval(self.interval)
                else:
                    sys.setcheckinterval(self.interval)
开发者ID:helenseo,项目名称:mongo-python-driver,代码行数:40,代码来源:utils.py



注:本文中的sys.setswitchinterval函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python sys.settrace函数代码示例发布时间:2022-05-27
下一篇:
Python sys.setrecursionlimit函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap