本文整理汇总了Python中six.moves.copyreg.pickle方法的典型用法代码示例。如果您正苦于以下问题:Python copyreg.pickle方法的具体用法?Python copyreg.pickle怎么用?Python copyreg.pickle使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类six.moves.copyreg
的用法示例。
在下文中一共展示了copyreg.pickle方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_protocol_version
# 需要导入模块: from six.moves import copyreg [as 别名]
# 或者: from six.moves.copyreg import pickle [as 别名]
def get_protocol_version(protocol=None, target=None):
"""
Return a suitable pickle protocol version for a given target.
Arguments:
target: The internals description of the targeted python
version. If this is ``None`` the specification of the currently
running python version will be used.
protocol(None or int): The requested protocol version (or None for the
default of the target python version).
Returns:
int: A suitable pickle protocol version.
"""
target = get_py_internals(target)
if protocol is None:
protocol = target['pickle_default_protocol']
if protocol > cPickle.HIGHEST_PROTOCOL:
warnings.warn('Downgrading pickle protocol, running python supports up to %d.' % cPickle.HIGHEST_PROTOCOL)
protocol = cPickle.HIGHEST_PROTOCOL
target_highest_protocol = target['pickle_highest_protocol']
if protocol > target_highest_protocol:
warnings.warn('Downgrading pickle protocol, target python supports up to %d.' % target_highest_protocol)
protocol = target_highest_protocol
return protocol
示例2: pickle_invoke
# 需要导入模块: from six.moves import copyreg [as 别名]
# 或者: from six.moves.copyreg import pickle [as 别名]
def pickle_invoke(func, target=None, protocol=None, *args):
"""pickle_invoke(func, *args, target=None, protocol=None)
Create a byte sequence which when unpickled calls a callable with given
arguments.
Note:
The function has to be importable using the same name on the system
that unpickles this invocation.
Arguments:
func(callable): The function to call or class to instantiate.
args(tuple): The arguments to call the callable with.
target: The internals description of the targeted python
version. If this is ``None`` the specification of the currently
running python version will be used.
protocol: The pickle protocol version to use (use None for default).
Returns:
bytes: The data that when unpickled calls ``func(*args)``.
Example:
>>> from pwny import *
>>> import pickle
>>> def hello(arg):
... print('Hello, %s!' % arg)
...
>>> pickle.loads(pickle_invoke(hello, 'world'))
Hello, world!
"""
protocol = get_protocol_version(protocol, target)
return cPickle.dumps(PickleInvoke(func, *args), protocol)
示例3: _pickle_Function
# 需要导入模块: from six.moves import copyreg [as 别名]
# 或者: from six.moves.copyreg import pickle [as 别名]
def _pickle_Function(f):
# copy of the input storage list
ins = list(f.input_storage)
input_storage = []
for (input, indices, inputs), (required, refeed, default) in \
zip(f.indices, f.defaults):
if isinstance(input, SymbolicInputKit):
li = len(indices)
if not default:
input_storage.append(ins[:li])
else:
input_storage.append(default)
ins[:li] = []
else:
input_storage.append(ins[0])
del ins[0]
inputs_data = [x.data for x in f.input_storage]
# HACK to detect aliased storage.
# This is here because aliased relationships are not [currently]
# preserved across the pickle operation
if not (f.pickle_aliased_memory_strategy == 'ignore'):
all_data = input_storage + inputs_data
for i, d_i in enumerate(all_data):
for j, d_j in enumerate(all_data):
if ((i < j) and isinstance(d_i, numpy.ndarray) and
isinstance(d_j, numpy.ndarray)):
if numpy.may_share_memory(d_i, d_j):
if f.pickle_aliased_memory_strategy == 'warn':
_logger.warning('aliased relationship between '
'Function arguments %s, %s '
'will not be preserved by '
'un-pickling operation' %
(str(d_i), str(d_j)))
else:
raise AliasedMemoryError(d_i, d_j)
rval = (_constructor_Function, (f.maker, input_storage, inputs_data))
return rval
示例4: _pickle_method
# 需要导入模块: from six.moves import copyreg [as 别名]
# 或者: from six.moves.copyreg import pickle [as 别名]
def _pickle_method(m):
"""Make instance methods pickable
See http://stackoverflow.com/questions/1816958/cant-pickle-type-instancemethod-when-using-pythons-multiprocessing-pool-ma/1816969#1816969
"""
if m.im_self is None:
return getattr, (m.im_class, m.im_func.func_name)
else:
return getattr, (m.im_self, m.im_func.func_name)
示例5: fix_proto_pickling
# 需要导入模块: from six.moves import copyreg [as 别名]
# 或者: from six.moves.copyreg import pickle [as 别名]
def fix_proto_pickling():
"""Fix pickling issues (see b/121323638)."""
for proto_cls in _PROTO_CLASSES:
copyreg.pickle(proto_cls, _pickle_proto)
示例6: __init__
# 需要导入模块: from six.moves import copyreg [as 别名]
# 或者: from six.moves.copyreg import pickle [as 别名]
def __init__(cls, name, bases, dictionary):
"""Here we perform the majority of our work on the class.
We add enum getters, an __init__ method, implementations
of all Message methods, and properties for all fields
in the protocol type.
Args:
name: Name of the class (ignored, but required by the
metaclass protocol).
bases: Base classes of the class we're constructing.
(Should be message.Message). We ignore this field, but
it's required by the metaclass protocol
dictionary: The class dictionary of the class we're
constructing. dictionary[_DESCRIPTOR_KEY] must contain
a Descriptor object describing this protocol message
type.
"""
descriptor = dictionary[GeneratedProtocolMessageType._DESCRIPTOR_KEY]
cls._decoders_by_tag = {}
cls._extensions_by_name = {}
cls._extensions_by_number = {}
if (descriptor.has_options and
descriptor.GetOptions().message_set_wire_format):
cls._decoders_by_tag[decoder.MESSAGE_SET_ITEM_TAG] = (
decoder.MessageSetItemDecoder(cls._extensions_by_number), None)
# Attach stuff to each FieldDescriptor for quick lookup later on.
for field in descriptor.fields:
_AttachFieldHelpers(cls, field)
descriptor._concrete_class = cls # pylint: disable=protected-access
_AddEnumValues(descriptor, cls)
_AddInitMethod(descriptor, cls)
_AddPropertiesForFields(descriptor, cls)
_AddPropertiesForExtensions(descriptor, cls)
_AddStaticMethods(cls)
_AddMessageMethods(descriptor, cls)
_AddPrivateHelperMethods(descriptor, cls)
copyreg.pickle(cls, lambda obj: (cls, (), obj.__getstate__()))
superclass = super(GeneratedProtocolMessageType, cls)
superclass.__init__(name, bases, dictionary)
# Stateless helpers for GeneratedProtocolMessageType below.
# Outside clients should not access these directly.
#
# I opted not to make any of these methods on the metaclass, to make it more
# clear that I'm not really using any state there and to keep clients from
# thinking that they have direct access to these construction helpers.