def asizeof(*objs, **opts):
    '''Return the combined size in bytes of all objects passed as positional argments.

    The available options and defaults are the following.

         *align=8*       -- size alignment

         *all=False*     -- all current objects

         *clip=80*       -- clip ``repr()`` strings

         *code=False*    -- incl. (byte)code size

         *derive=False*  -- derive from super type

         *ignored=True*  -- ignore certain types

         *infer=False*   -- try to infer types

         *limit=100*     -- recursion limit

         *stats=0.0*     -- print statistics

    Set *align* to a power of 2 to align sizes.  Any value less
    than 2 avoids size alignment.

    All current module, global and stack objects are sized if
    *all* is True and if no positional arguments are supplied.

    A positive *clip* value truncates all repr() strings to at
    most *clip* characters.

    The (byte)code size of callable objects like functions,
    methods, classes, etc. is included only if *code* is True.

    If *derive* is True, new types are handled like an existing
    (super) type provided there is one and only of those.

    By default certain base types like object, super, etc. are
    ignored.  Set *ignored* to False to include those.

    If *infer* is True, new types are inferred from attributes
    (only implemented for dict types on callable attributes
    as get, has_key, items, keys and values).

    Set *limit* to a positive value to accumulate the sizes of
    the referents of each object, recursively up to the limit.
    Using *limit=0* returns the sum of the flat[4] sizes of
    the given objects.  High *limit* values may cause runtime
    errors and miss objects for sizing.

    A positive value for *stats* prints up to 8 statistics, (1)
    a summary of the number of objects sized and seen, (2) a
    simple profile of the sized objects by type and (3+) up to
    6 tables showing the static, dynamic, derived, ignored,
    inferred and dict types used, found resp. installed.  The
    fractional part of the *stats* value (x100) is the cutoff
    percentage for simple profiles.

    [4] See the documentation of this module for the definition of flat size.
    '''
    t, p = _objs_opts(objs, **opts)
    if t:
        _asizer.reset(**p)
        s = _asizer.asizeof(*t)
        _asizer.print_stats(objs=t, opts=opts)  # show opts as _kwdstr
        _asizer._clear()
    else:
        s = 0
    return s
Return the combined size in bytes of all objects passed as positional argments.

    The available options and defaults are the following.

         *align=8*       -- size alignment

         *all=False*     -- all current objects

         *clip=80*       -- clip ``repr()`` strings

         *code=False*    -- incl. (byte)code size

         *derive=False*  -- derive from super type

         *ignored=True*  -- ignore certain types

         *infer=False*   -- try to infer types

         *limit=100*     -- recursion limit

         *stats=0.0*     -- print statistics

    Set *align* to a power of 2 to align sizes.  Any value less
    than 2 avoids size alignment.

    All current module, global and stack objects are sized if
    *all* is True and if no positional arguments are supplied.

    A positive *clip* value truncates all repr() strings to at
    most *clip* characters.

    The (byte)code size of callable objects like functions,
    methods, classes, etc. is included only if *code* is True.

    If *derive* is True, new types are handled like an existing
    (super) type provided there is one and only of those.

    By default certain base types like object, super, etc. are
    ignored.  Set *ignored* to False to include those.

    If *infer* is True, new types are inferred from attributes
    (only implemented for dict types on callable attributes
    as get, has_key, items, keys and values).

    Set *limit* to a positive value to accumulate the sizes of
    the referents of each object, recursively up to the limit.
    Using *limit=0* returns the sum of the flat[4] sizes of
    the given objects.  High *limit* values may cause runtime
    errors and miss objects for sizing.

    A positive value for *stats* prints up to 8 statistics, (1)
    a summary of the number of objects sized and seen, (2) a
    simple profile of the sized objects by type and (3+) up to
    6 tables showing the static, dynamic, derived, ignored,
    inferred and dict types used, found resp. installed.  The
    fractional part of the *stats* value (x100) is the cutoff
    percentage for simple profiles.

    [4] See the documentation of this module for the definition of flat size.