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


Python weakref.WeakValueDictionary方法代码示例

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


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

示例1: clear

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def clear(self):
        self.user = None
        self._users = weakref.WeakValueDictionary()
        self._emojis = {}
        self._calls = {}
        self._guilds = {}
        self._voice_clients = {}

        # LRU of max size 128
        self._private_channels = OrderedDict()
        # extra dict to look up private channels by user id
        self._private_channels_by_user = {}
        self._messages = self.max_messages and deque(maxlen=self.max_messages)

        # In cases of large deallocations the GC should be called explicitly
        # To free the memory more immediately, especially true when it comes
        # to reconnect loops which cause mass allocations and deallocations.
        gc.collect() 
开发者ID:Rapptz,项目名称:discord.py,代码行数:20,代码来源:state.py

示例2: __init__

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def __init__(self, moveEvent, acceptable):
        self.enter = False
        self.acceptable = acceptable
        self.exit = False
        self.__clickItems = weakref.WeakValueDictionary()
        self.__dragItems = weakref.WeakValueDictionary()
        self.currentItem = None
        if moveEvent is not None:
            self._scenePos = moveEvent.scenePos()
            self._screenPos = moveEvent.screenPos()
            self._lastScenePos = moveEvent.lastScenePos()
            self._lastScreenPos = moveEvent.lastScreenPos()
            self._buttons = moveEvent.buttons()
            self._modifiers = moveEvent.modifiers()
        else:
            self.exit = True 
开发者ID:SrikanthVelpuri,项目名称:tf-pose,代码行数:18,代码来源:mouseEvents.py

示例3: test_weak_valued_dict_update

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def test_weak_valued_dict_update(self):
        self.check_update(weakref.WeakValueDictionary,
                          {1: C(), 'a': C(), C(): C()})
        # errors
        self.assertRaises(TypeError, weakref.WeakValueDictionary.update)
        d = weakref.WeakValueDictionary()
        self.assertRaises(TypeError, d.update, {}, {})
        self.assertRaises(TypeError, d.update, (), ())
        self.assertEqual(list(d.keys()), [])
        # special keyword arguments
        o = Object(3)
        for kw in 'self', 'dict', 'other', 'iterable':
            d = weakref.WeakValueDictionary()
            d.update(**{kw: o})
            self.assertEqual(list(d.keys()), [kw])
            self.assertEqual(d[kw], o) 
开发者ID:IronLanguages,项目名称:ironpython2,代码行数:18,代码来源:test_weakref.py

示例4: test_deepcopy_weakvaluedict

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def test_deepcopy_weakvaluedict(self):
        class C(object):
            def __init__(self, i):
                self.i = i
        a, b, c, d = [C(i) for i in xrange(4)]
        u = weakref.WeakValueDictionary()
        u[a] = b
        u[c] = d
        # Keys are copied, values aren't
        v = copy.deepcopy(u)
        self.assertNotEqual(v, u)
        self.assertEqual(len(v), 2)
        (x, y), (z, t) = sorted(v.items(), key=lambda pair: pair[0].i)
        self.assertFalse(x is a)
        self.assertEqual(x.i, a.i)
        self.assertTrue(y is b)
        self.assertFalse(z is c)
        self.assertEqual(z.i, c.i)
        self.assertTrue(t is d)
        del x, y, z, t
        del d
        self.assertEqual(len(v), 1) 
开发者ID:IronLanguages,项目名称:ironpython2,代码行数:24,代码来源:test_copy.py

示例5: global_cache

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def global_cache(srctype, ffi, funcname, *args, **kwds):
    key = kwds.pop('key', (funcname, args))
    assert not kwds
    try:
        return ffi._typecache[key]
    except KeyError:
        pass
    try:
        res = getattr(ffi._backend, funcname)(*args)
    except NotImplementedError as e:
        raise NotImplementedError("%s: %r: %s" % (funcname, srctype, e))
    # note that setdefault() on WeakValueDictionary is not atomic
    # and contains a rare bug (http://bugs.python.org/issue19542);
    # we have to use a lock and do it ourselves
    cache = ffi._typecache
    with global_lock:
        res1 = cache.get(key)
        if res1 is None:
            cache[key] = res
            return res
        else:
            return res1 
开发者ID:reBiocoder,项目名称:bioforum,代码行数:24,代码来源:model.py

示例6: __init__

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def __init__(self, shorthand_name=None):
        """
        Creates a new :class:`TransformNode`.

        **shorthand_name** - a string representing the "name" of this
                             transform. The name carries no significance
                             other than to improve the readability of
                             ``str(transform)`` when DEBUG=True.
        """
        # Parents are stored in a WeakValueDictionary, so that if the
        # parents are deleted, references from the children won't keep
        # them alive.
        self._parents = WeakValueDictionary()

        # TransformNodes start out as invalid until their values are
        # computed for the first time.
        self._invalid = 1
        self._shorthand_name = shorthand_name or '' 
开发者ID:ktraunmueller,项目名称:Computable,代码行数:20,代码来源:transforms.py

示例7: insert

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def insert(self, index, value):
        assert self.ref_classdef.isinstance(value.classdef)

        self.references.insert(index, self.next_free_key)

        objects = {}
        objects[index] = value
        # increment all cached object with > indices +1
        for key, value in self.objects.items():
            if key >= index:
                objects[key+1] = value
            else:
                objects[key] = value

        self.next_free_key += 1
        if self.attached:
            self.objects = weakref.WeakValueDictionary(objects)
        else:
            self.objects = objects
        self.attach() 
开发者ID:markreidvfx,项目名称:pyaaf2,代码行数:22,代码来源:properties.py

示例8: __init__

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def __init__(self, parent, pid, format, version=PROPERTY_VERSION):
        super(StrongRefSetProperty, self).__init__(parent, pid, format, version)

        self.references = {}

        self.index_name = None

        self.next_free_key = 0
        self.last_free_key = 0xFFFFFFFF

        # Pid of the referenced objects unique_key
        self.key_pid = None
        self.key_size = None

        if self.attached:
            self.objects = weakref.WeakValueDictionary()
        else:
            self.objects = {} 
开发者ID:markreidvfx,项目名称:pyaaf2,代码行数:20,代码来源:properties.py

示例9: __init__

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def __init__(self, func):
        self.srcfile = inspect.getsourcefile(func)
        self.srcline = inspect.getsourcelines(func)[0]
        self.func = func
        functools.update_wrapper(self, func)
        self.calls = 0
        self.name = None

        # register the block
        myhdl._simulator._blocks.append(self)

        self.bound_functions = WeakValueDictionary() 
开发者ID:myhdl,项目名称:myhdl,代码行数:14,代码来源:_block.py

示例10: __init__

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def __init__(self, ref, close_cb):
        self.ref = ref
        self._close = close_cb
        self._referrers = weakref.WeakValueDictionary() 
开发者ID:jtolio,项目名称:leveldb-py,代码行数:6,代码来源:leveldb.py

示例11: close

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def close(self):
        ref, self.ref = self.ref, None
        close, self._close = self._close, None
        referrers = self._referrers
        self._referrers = weakref.WeakValueDictionary()
        for referrer in referrers.valuerefs():
            referrer = referrer()
            if referrer is not None:
                referrer.close()
        if ref is not None and close is not None:
            close(ref) 
开发者ID:jtolio,项目名称:leveldb-py,代码行数:13,代码来源:leveldb.py

示例12: locked

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def locked() -> Callable:
    """
    Allows the user to only run one instance of the decorated command at a time.

    Subsequent calls to the command from the same author are ignored until the command has completed invocation.

    This decorator must go before (below) the `command` decorator.
    """
    def wrap(func: Callable) -> Callable:
        func.__locks = WeakValueDictionary()

        @wraps(func)
        async def inner(self: Cog, ctx: Context, *args, **kwargs) -> None:
            lock = func.__locks.setdefault(ctx.author.id, Lock())
            if lock.locked():
                embed = Embed()
                embed.colour = Colour.red()

                log.debug("User tried to invoke a locked command.")
                embed.description = (
                    "You're already using this command. Please wait until it is done before you use it again."
                )
                embed.title = random.choice(ERROR_REPLIES)
                await ctx.send(embed=embed)
                return

            async with func.__locks.setdefault(ctx.author.id, Lock()):
                await func(self, ctx, *args, **kwargs)
        return inner
    return wrap 
开发者ID:python-discord,项目名称:bot,代码行数:32,代码来源:decorators.py

示例13: __init__

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def __init__(cls, *args, **kwargs):
        cls.__instances = weakref.WeakValueDictionary()
        cls.__strong_cache = OrderedDict()
        cls.__strong_cache_size = 8 
开发者ID:Frank-qlu,项目名称:recruit,代码行数:6,代码来源:_factories.py

示例14: __init__

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def __init__(self, connector=None, *, proxy=None, proxy_auth=None, loop=None, unsync_clock=True):
        self.loop = asyncio.get_event_loop() if loop is None else loop
        self.connector = connector
        self.__session = None # filled in static_login
        self._locks = weakref.WeakValueDictionary()
        self._global_over = asyncio.Event()
        self._global_over.set()
        self.token = None
        self.bot_token = False
        self.proxy = proxy
        self.proxy_auth = proxy_auth
        self.use_clock = not unsync_clock

        user_agent = 'DiscordBot (https://github.com/Rapptz/discord.py {0}) Python/{1[0]}.{1[1]} aiohttp/{2}'
        self.user_agent = user_agent.format(__version__, sys.version_info, aiohttp.__version__) 
开发者ID:Rapptz,项目名称:discord.py,代码行数:17,代码来源:http.py

示例15: prune

# 需要导入模块: import weakref [as 别名]
# 或者: from weakref import WeakValueDictionary [as 别名]
def prune(self):
        """prune unreferenced, non-dirty states."""

        ref_count = len(self)
        dirty = [s.obj() for s in self.all_states() if s.modified]

        # work around http://bugs.python.org/issue6149
        keepers = weakref.WeakValueDictionary()
        keepers.update(self)

        self._dict.clear()
        self._dict.update(keepers)
        self.modified = bool(dirty)
        return ref_count - len(self) 
开发者ID:jpush,项目名称:jbox,代码行数:16,代码来源:identity.py


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