当前位置: 首页>>代码示例>>Python>>正文


Python weakref.ref方法代码示例

本文整理汇总了Python中weakref.ref方法的典型用法代码示例。如果您正苦于以下问题:Python weakref.ref方法的具体用法?Python weakref.ref怎么用?Python weakref.ref使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在weakref的用法示例。


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

示例1: __init__

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def __init__(self, obj, func, *args, **kwargs):
        if not self._registered_with_atexit:
            # We may register the exit function more than once because
            # of a thread race, but that is harmless
            import atexit
            atexit.register(self._exitfunc)
            finalize._registered_with_atexit = True
        info = self._Info()
        info.weakref = ref(obj, self)
        info.func = func
        info.args = args
        info.kwargs = kwargs or None
        info.atexit = True
        info.index = next(self._index_iter)
        self._registry[self] = info
        finalize._dirty = True 
开发者ID:kislyuk,项目名称:aegea,代码行数:18,代码来源:weakref.py

示例2: create_dict

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def create_dict(self):
        """Create a new dict for the current thread, and return it."""
        localdict = {}
        key = self.key
        thread = current_thread()
        idt = id(thread)
        def local_deleted(_, key=key):
            # When the localimpl is deleted, remove the thread attribute.
            thread = wrthread()
            if thread is not None:
                del thread.__dict__[key]
        def thread_deleted(_, idt=idt):
            # When the thread is deleted, remove the local dict.
            # Note that this is suboptimal if the thread object gets
            # caught in a reference loop. We would like to be called
            # as soon as the OS-level thread ends instead.
            local = wrlocal()
            if local is not None:
                dct = local.dicts.pop(idt)
        wrlocal = ref(self, local_deleted)
        wrthread = ref(thread, thread_deleted)
        thread.__dict__[key] = wrlocal
        self.dicts[idt] = wrthread, localdict
        return localdict 
开发者ID:war-and-code,项目名称:jawfish,代码行数:26,代码来源:_threading_local.py

示例3: subscribe

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def subscribe(func):
    '''
    Add a subscriber function to option events

    Parameters
    ----------
    func : callable
        A callable object that takes two parameters: key and value.
        This function is called with the name and value of any option
        that is set.

    Returns
    -------
    None

    '''
    if isinstance(func, types.MethodType):
        obj = six.get_method_self(func)
        func = six.get_method_function(func)
        _subscribers[func] = (weakref.ref(func), weakref.ref(obj))
    else:
        _subscribers[func] = (weakref.ref(func), None) 
开发者ID:sassoftware,项目名称:python-esppy,代码行数:24,代码来源:config.py

示例4: ensure_proc_terminate

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def ensure_proc_terminate(proc):
    """
    Make sure processes terminate when main process exit.

    Args:
        proc (multiprocessing.Process or list)
    """
    if isinstance(proc, list):
        for p in proc:
            ensure_proc_terminate(p)
        return

    def stop_proc_by_weak_ref(ref):
        proc = ref()
        if proc is None:
            return
        if not proc.is_alive():
            return
        proc.terminate()
        proc.join()

    assert isinstance(proc, mp.Process)
    atexit.register(stop_proc_by_weak_ref, weakref.ref(proc)) 
开发者ID:tensorpack,项目名称:dataflow,代码行数:25,代码来源:concurrency.py

示例5: lex

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def lex(self, source, name=None, filename=None):
        """Lex the given sourcecode and return a generator that yields
        tokens as tuples in the form ``(lineno, token_type, value)``.
        This can be useful for :ref:`extension development <writing-extensions>`
        and debugging templates.

        This does not perform preprocessing.  If you want the preprocessing
        of the extensions to be applied you have to filter source through
        the :meth:`preprocess` method.
        """
        source = text_type(source)
        try:
            return self.lexer.tokeniter(source, name, filename)
        except TemplateSyntaxError:
            exc_info = sys.exc_info()
        self.handle_exception(exc_info, source_hint=source) 
开发者ID:remg427,项目名称:misp42splunk,代码行数:18,代码来源:environment.py

示例6: _adjust_thread_count

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def _adjust_thread_count(self):
        # if idle threads are available, don't spin new threads
        if self._idle_semaphore.acquire(False):
            return

        # When the executor gets lost, the weakref callback will wake up
        # the worker threads.
        def weakref_cb(_, q=self._work_queue):
            q.put(None)

        num_threads = len(self._threads)
        if num_threads < self._max_workers:
            thread_name = '%s_%d' % (self._thread_name_prefix or self,
                                     num_threads)
            t = threading.Thread(name=thread_name, target=_worker,
                                 args=(weakref.ref(self, weakref_cb),
                                       self._work_queue))
            t.daemon = True
            t.start()
            self._threads.add(t)
            _threads_queues[t] = self._work_queue 
开发者ID:remg427,项目名称:misp42splunk,代码行数:23,代码来源:thread.py

示例7: _start_queue_management_thread

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def _start_queue_management_thread(self):
        # When the executor gets lost, the weakref callback will wake up
        # the queue management thread.
        def weakref_cb(_, q=self._result_queue):
            q.put(None)
        if self._queue_management_thread is None:
            self._queue_management_thread = threading.Thread(
                    target=_queue_management_worker,
                    args=(weakref.ref(self, weakref_cb),
                          self._processes,
                          self._pending_work_items,
                          self._work_ids,
                          self._call_queue,
                          self._result_queue))
            self._queue_management_thread.daemon = True
            self._queue_management_thread.start()
            _threads_queues[self._queue_management_thread] = self._result_queue 
开发者ID:remg427,项目名称:misp42splunk,代码行数:19,代码来源:process.py

示例8: test_task_refcounting

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def test_task_refcounting(self):
        # On CPython, tasks and their arguments should be released immediately
        # without waiting for garbage collection.
        @gen.engine
        def f():
            class Foo(object):
                pass
            arg = Foo()
            self.arg_ref = weakref.ref(arg)
            task = gen.Task(self.io_loop.add_callback, arg=arg)
            self.task_ref = weakref.ref(task)
            yield task
            self.stop()

        self.run_gen(f)
        self.assertIs(self.arg_ref(), None)
        self.assertIs(self.task_ref(), None) 
开发者ID:tao12345666333,项目名称:tornado-zh,代码行数:19,代码来源:gen_test.py

示例9: _adjust_thread_count

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def _adjust_thread_count(self):
        # When the executor gets lost, the weakref callback will wake up
        # the worker threads.
        def weakref_cb(_, q=self._work_queue):
            q.put(None)
        # TODO(bquinlan): Should avoid creating new threads if there are more
        # idle threads than items in the work queue.
        num_threads = len(self._threads)
        if num_threads < self._max_workers:
            thread_name = '%s_%d' % (self._thread_name_prefix or self,
                                     num_threads)
            t = threading.Thread(name=thread_name, target=_worker,
                                 args=(weakref.ref(self, weakref_cb),
                                       self._work_queue))
            t.daemon = True
            t.start()
            self._threads.add(t)
            _threads_queues[t] = self._work_queue 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:20,代码来源:thread.py

示例10: attach

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def attach(self, hooks_dict, hook):
        assert not self._hooks_dict_ref, 'The same handle cannot be attached twice.'
        self._id = id(hook)
        hooks_dict[self._id] = hook
        self._hooks_dict_ref = weakref.ref(hooks_dict) 
开发者ID:awslabs,项目名称:dynamic-training-with-apache-mxnet-on-aws,代码行数:7,代码来源:utils.py

示例11: __setstate__

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def __setstate__(self, state):
        if state[0] is None:
            self._hooks_dict_ref = weakref.ref(collections.OrderedDict())
        else:
            self._hooks_dict_ref = weakref.ref(state[0])
        self._id = state[1] 
开发者ID:awslabs,项目名称:dynamic-training-with-apache-mxnet-on-aws,代码行数:8,代码来源:utils.py

示例12: _create_accelerator

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def _create_accelerator(self, builder, traverser):
        obj = self._native.create_accelerator(builder, traverser)
        self._destroyables.append(weakref.ref(obj))
        return obj 
开发者ID:ozen,项目名称:PyOptiX,代码行数:6,代码来源:context.py

示例13: _create_geometry

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def _create_geometry(self):
        obj = self._native.create_geometry()
        self._destroyables.append(weakref.ref(obj))
        return obj 
开发者ID:ozen,项目名称:PyOptiX,代码行数:6,代码来源:context.py

示例14: _create_buffer

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def _create_buffer(self, buffer_type):
        obj = self._native.create_buffer(buffer_type)
        self._destroyables.append(weakref.ref(obj))
        return obj 
开发者ID:ozen,项目名称:PyOptiX,代码行数:6,代码来源:context.py

示例15: _create_geometry_group

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import ref [as 别名]
def _create_geometry_group(self):
        obj = self._native.create_geometry_group()
        self._destroyables.append(weakref.ref(obj))
        return obj 
开发者ID:ozen,项目名称:PyOptiX,代码行数:6,代码来源:context.py


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