He mirado en el pickle documentación, pero no entiendo donde pickle es útil.

¿Cuáles son algunos de los casos de uso para el pepinillo?

  • He buscado en Google algo similar, pero Google no es lo suficientemente inteligente como para que me diga cómo puede una cierta ayuda del módulo de mí. Sé cómo usar pickle, pero lo que quiero saber es en qué escenario de otras personas que lo utilice.
  • No hay nada malo con esta pregunta.
  • Upvote. Preguntas como estas son muy importantes en Stackoverflow.
  • Se parece a alguien votada abajo esta pregunta? Así que me upvote. 😀
  • La parte que no entiendo sobre el decapado es ¿por qué no acaba de guardar el valor en un archivo? Por qué adobar?
InformationsquelleAutor satoru | 2010-08-09

9 Comentarios

  1. 55

    Algunos de los usos que he llegado a través de:

    1) ahorro de un programa del estado de los datos en el disco para que pueda continuar donde lo dejó cuando se reinicia (persistencia)

    2) el envío de datos de python a través de una conexión TCP en un multi-núcleo o sistema distribuido (marshalling)

    3) el almacenamiento de los objetos de python en una base de datos

    4) la conversión de un arbitrario python objeto a una cadena para que pueda ser utilizado como clave de un diccionario (por ejemplo, para el almacenamiento en caché & memoization).

    Hay algunos problemas con la última – dos objetos idénticos puede ser en escabeche y el resultado en diferentes cadenas – o incluso el mismo objeto en vinagre dos veces, puede tener diferentes representaciones. Esto es debido a que la salmuera se puede incluir el número de referencia de la información.

    Destacar @lunaryorn comentario – nunca unpickle una cadena a partir de una fuente no confiable, ya que una cuidadosa pickle podría ejecutar código arbitrario en el sistema. Por ejemplo, ver https://blog.nelhage.com/2011/03/exploiting-pickle/

    • Uno no debe de transferencia de escabeche de objetos a través de la red o de otros canales que no son de confianza, a menos que el vinagre de datos es cuidadosamente protegido contra la manipulación. El pepinillo documentación explícitamente advierte a nunca unpickle datos de los que no son de confianza o no autenticado fuentes.
    • buen punto. Si va a transferir en escabeche de datos entre máquinas, a continuación, utiliza un canal seguro, tales como SSL o SSH tunneling.
    • Usted sigue confiando en el extremo de no explotar, que pueden o no estar bien, dependiendo del contexto.
    • buen punto, pero en ese caso, ¿cómo podemos cifrar los datos en el dominio público. ¿tenemos que usar algún otro py lib uso o no de pepinillo
    • Es el punto 4) cierto? He encontrado esta que tiene algunos (de edad) evidencia de que no iba a funcionar aquí.
    • véase el siguiente párrafo, donde me cuenta que el decapado de la misma discbased dos veces puede resultar en diferentes cadenas. Si esto es un problema o no, depende del contexto. Si estás utilizando una clave de caché para mejorar el rendimiento, a continuación, el ocasional con la caché puede no ser significativo. YMMV.
    • Estás hablando de este? Yo no soy de los que buscan tener la caché de describir estoy buscando hash como identificadores, y estoy tratando de averiguar si y cómo se hace. Supongo que si no hay referencias, entonces debe ser bueno. Yo no veo esto claramente documentado en ninguna parte, ¿cómo entender esto?

  2. 10

    Mínimo de ida y vuelta de ejemplo..

    >>> import pickle
    >>> a = Anon()
    >>> a.foo = 'bar'
    >>> pickled = pickle.dumps(a)
    >>> unpickled = pickle.loads(pickled)
    >>> unpickled.foo
    'bar'

    Edición: pero en cuanto a la pregunta de ejemplos del mundo real de decapado, tal vez el uso más avanzado de decapado (tendría que cavar muy profundo en el origen) es ZODB:
    http://svn.zope.org/

    De lo contrario, PyPI menciona varias:
    http://pypi.python.org/pypi?:action=search&plazo=pickle&submit=buscar

    Yo personalmente he visto varios ejemplos de vinagre objetos que se envían a través de la red como una red fácil de usar el protocolo de transferencia.

  3. 7

    Lo he usado en uno de mis proyectos. Si la aplicación fue terminado durante su trabajo (lo hizo una tarea larga y procesar gran cantidad de datos), que necesitaba para salvar a toda la estructura de datos y volver a cargarlo después de que la aplicación se ejecute de nuevo. He utilizado cPickle para esto, como la velocidad, fue crucial en la cosa y el tamaño de los datos era muy grande.

  4. 7

    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.

  5. 4

    Para el principiante (como es el caso de la me) es realmente difícil entender por qué el uso de la salmuera en el primer lugar de la lectura de la la documentación oficial. Quizás es porque el docs implica que usted ya sabe todo el propósito de la serialización. Sólo después de leer el descripción general de serialización he comprendido la razón de este módulo y sus casos de uso común. También amplias explicaciones de la serialización prescindiendo de un lenguaje de programación en particular puede ayudar a:
    https://stackoverflow.com/a/14482962/4383472, ¿Cuál es la serialización?,
    https://stackoverflow.com/a/3984483/4383472

    • su «respuesta» no es una respuesta, es más de un comentario. El OP pregunta es «¿cuáles son algunos de los casos de uso para el pepinillo?». Sientes que has contestado a esa pregunta en alguna manera?
    • bueno, creo que he respondido a la pregunta, porque yo también tenía dificultades para entender los usos comunes de la salmuera cuando traté de leer acerca de este módulo aquí, aquí y aquí. Debido a que la mayoría de ellos empiezan a explicar lo de la salmuera hace suponiendo que conocer la motivación que hay detrás de todo concepto de serialización. Después de leer simple artículo de wiki en la serialización he captado la idea general, así como el «común de los casos». Tal vez va a ayudar a alguien…
    • y algunos de esos casos comunes son…? Si hay algunos que no se enumeran aquí en otras respuestas… añadiendo a su respuesta sería muy apropiado.
  6. 3

    Pickle es como «Guardar Como..» y «Abrir..» para sus estructuras de datos y clases. Digamos que yo quiero salvar mi estructuras de datos, de modo que es persistente entre el programa se ejecuta.

    Ahorro:

    with open("save.p", "wb") as f:    
        pickle.dump(myStuff, f)        

    De carga:

    try:
        with open("save.p", "rb") as f:
            myStuff = pickle.load(f)
    except:
        myStuff = defaultdict(dict)

    Ahora no tengo a construir myStuff desde cero otra vez, y yo pueda escoger(le) hasta desde donde lo dejé.

  7. 2

    Para agregar un ejemplo real: El Esfinge herramienta de documentación de Python usa el pepinillo a la caché de analizar los documentos y referencias cruzadas entre documentos, para acelerar compilaciones posteriores de la documentación.

  8. 1

    Puedo decirle a usted, los usos que lo uso y han visto que se usa para:

    • Perfil de juego guarda
    • Juego de datos guarda como la vida y la salud de
    • Registros anteriores de decir los números inputed a un programa de

    Esos son los que yo uso por lo menos

  9. 1

    Yo uso durante el decapado web desguace uno de sitio web en ese momento quiero almacenar más de 8000k url y los quieren procesar lo más rápido posible, así que uso el decapado debido a su calidad de salida es muy alta.

    se puede llegar fácilmente a la url y donde se detiene ni trabajo directorio de palabra clave también fetch url detalles muy rápido para reanudar el proceso.

Dejar respuesta

Please enter your comment!
Please enter your name here