Cargando

  • 2 Min To Read
  • 01 Jan, 0001
    Índice de contenido

    La salida de esto es: En trabajador con: 6 Resultado de asíncrono: 36 En trabajador con: 4 En recopilar_resultados: 16 31.6 Intercambio de datos entre procesos En algunas situaciones es necesario que dos procesos intercambien datos. sin embargo, el dos objetos de proceso no comparten memoria ya que se ejecutan en operaciones separadas procesos a nivel de sistema. Para evitar esto, la biblioteca de multiprocesamiento proporciona la Función de tubería (). La función Pipe() devuelve un par de objetos connection.Connection conectados por una tubería que por defecto es dúplex (bidireccional). Los dos objetos de conexión devueltos por Pipe() representan los dos extremos de la tubo. Cada objeto de conexión tiene métodos send() y recv() (entre otros). Esto permite que un proceso envíe datos a través del método send() de un extremo del objeto de conexión. A su vez, un segundo proceso puede recibir esos datos a través de la recepción () método del otro objeto de conexión. Esto se ilustra a continuación: desde el grupo de importación de multiprocesamiento def recoger_resultados(resultado): print(‘En recopilar_resultados: ‘, resultado) def trabajador(x): print(‘En trabajador con: ‘, x) volver x * x def principal(): con Pool (procesos = 2) como grupo:

    obtener un ejemplo basado

    res = pool.apply_async(trabajador, [6]) print(‘Resultado de asíncrono: ‘, res.get(timeout=1)) con Pool (procesos = 2) como grupo:

    ejemplo basado en devolución de llamada

    pool.apply_async(trabajador, argumentos=[4], devolución de llamada = recopilar_resultados) si nombre == ‘principal’: principal() 372 31 multiprocesamiento

    comments powered by Disqus