Entendí que Python decapado es una forma de «guardar» un Objeto de Python en una forma que haga respetar la programación del Objeto – diferente de una salida por escrito en archivo txt o DB.

¿Tienes más detalles o referencias en los siguientes puntos:

  • donde se escabeche de los objetos almacenados»?
  • ¿por qué es el decapado de preservación de la representación del objeto más que, por ejemplo, el almacenamiento en base de datos?
  • puedo recuperar escabeche objetos de una sesión de shell de Python a otro?
  • ¿tiene ejemplos significativos cuando la serialización es útil?
  • hace serialización con pepinillo implica que los datos de ‘compresión’?

En otras palabras, estoy buscando un doc en el decapado – Python.doc explica cómo implementar el pepinillo, pero parece que no sumergirse en los detalles sobre el uso y la necesidad de serialización.

  • Guardar el estado para su posterior restauración o para compartir o copiar un objeto a otro tiempo de ejecución de python sería mi suposición.
  • Muchas de sus preguntas son respondidas por el artículo de Wikipedia sobre la serialización: en.wikipedia.org/wiki/Serialization
  • estás preguntando por qué me necesita Pickle para la serialización en Python? o más bien lo que es (el propósito) de la serialización después de todo?.
  • Tal vez bueno mencionar los problemas de seguridad con la vinagreta. Se pueden encontrar ejemplos en la docs, y en numerosas por LO de las preguntas, como este.
InformationsquelleAutor kiriloff | 2012-01-23

4 Comentarios

  1. 93

    El decapado es una forma de convertir un objeto de python (lista, dict, etc.) en un flujo de caracteres. La idea es que este flujo de caracteres contiene toda la información necesaria para reconstruir el objeto en otra secuencia de comandos de python.

    Como para que el escabeche se almacena la información, generalmente, sería:

    with open('filename', 'wb') as f:
        var = {1 : 'a' , 2 : 'b'}
        pickle.dump(var, f)

    Que almacenaría el escabeche versión de nuestro var dict en el ‘nombre de archivo’ archivo. Luego, en otra secuencia de comandos, usted puede cargar este archivo en una variable, y el diccionario será recreado:

    with open('filename','rb') as f:
        var = pickle.load(f)

    Otro uso para el decapado es que si usted necesita para transmitir este diccionario a través de una red (tal vez con tomas de corriente o de algo). Primero debe convertir en un flujo de caracteres, entonces usted puede enviar a través de una conexión de socket.

    También, no hay una «compresión» para hablar de aquí…es sólo una manera de convertir a partir de una representación (en la RAM) a otro (en «texto»).

    About.com tiene una buena introducción de decapado aquí.

    • generalmente, sería with open('filename') as f: ...
    • ah, sí…que el error más resistente. Gracias.
    • También, usted tendría que hacer with open(filename, 'wb') as f: ... o usted no será capaz de escribir en el archivo.
    • Gracias!! Esta en Python persistencia de gestión es agradable, aquí
    • En general no es una muy buena idea utilizar pickle para transmitir un diccionario a través de una red (json podría ser mejor aquí). Aunque en raros casos puede ser útil por ejemplo, multiprocessing módulo.
    • Pietzcker: protocol=0 (por defecto en Python2.x) se puede utilizar con los archivos abiertos en modo de texto.
    • Bien, pero él se abre el archivo para lectura, no para escribir.
    • Pietzcker: estás en lo correcto. He perdido.
    • Caray, esto es lo que sucede cuando usted escribe el código aquí distraídamente y en realidad no se de depuración. =O

  2. 34

    El decapado es absolutamente necesario para distribuida y la computación en paralelo.

    Decir que quería hacer un paralelo reducir el mapa con multiprocessing (o a través de los nodos de clúster con pyina), entonces usted necesita para asegurarse de que la función que desea tener asignadas a lo largo del paralelo recursos de la salmuera. Si no pepinillo, no se puede enviar a otros recursos en otro proceso, equipo, etc. Ver también aquí para un buen ejemplo.

    Para ello, yo uso eneldo, que puede serializar casi nada en python. El eneldo también ha algunas buenas herramientas para ayudarle a entender lo que está causando el decapado de error cuando su código de falla.

    Y, sí, la gente utilizar el picking para guardar el estado de un cálculo, o su ipython sesión, o lo que sea. Usted también puede ampliar la salmuera del Pickler y UnPickler para hacer la compresión con bz2 o gzip si quieres.

  3. 0

    Me parece particularmente útil con grandes y complejos clases personalizadas. En un ejemplo particular, estoy pensando, «Encuentro» de la información (a partir de una base de datos) para crear la clase ya estaba la mitad de la batalla. Luego de que la información almacenada en la clase puede ser modificado en tiempo de ejecución por el usuario.

    Podría tener otro grupo de tablas en la base de datos y escribir otra función para ir a través de todo lo almacenado y escribir en las nuevas tablas de base de datos. Entonces usted tendrá que escribir otra función que ser capaz de cargar algo guardado por leer toda esa información de nuevo.

    Alternativamente, usted podría pickle toda la clase como es y, a continuación, la tienda que a un solo campo en la base de datos. Entonces, cuando usted va a cargar de nuevo, todo se carga de nuevo en a la vez como lo era antes. Esto puede ahorrar un montón de tiempo y código al guardar y recuperar clases complicadas.

  4. -1

    es un tipo de serialización. uso cPickle es mucho más rápido que pickle.

    import pickle
    ##make Pickle File
    with open('pickles/corups.pickle', 'wb') as handle:
        pickle.dump(corpus, handle)
    
    #read pickle file
    with open('pickles/corups.pickle', 'rb') as handle:
        corpus = pickle.load(handle)

Dejar respuesta

Please enter your comment!
Please enter your name here