Metacpan
Parallel::ForkManager es un módulo sencillo y potente que puede utilizarse para realizar una serie de operaciones en paralelo dentro de un único script Perl. Es especialmente adecuado para realizar una serie de operaciones repetitivas en una máquina relativamente potente, especialmente cuando se trabaja en una máquina multiprocesador. Este módulo utiliza sintaxis orientada a objetos, si eso le asusta entonces
En muchos casos, este número máximo de procesos a bifurcar será también el número real de procesos bifurcados por su programa. En este caso, es muy importante elegir este número cuidadosamente, ya que bifurcar un número suficientemente grande de procesos es suficiente para poner de rodillas incluso a la más poderosa de las máquinas. Además, puede cambiar este número más tarde en su programa según sea necesario con el siguiente método:
La aplicación de gestión de horquillas
Este módulo está pensado para su uso en operaciones que se pueden realizar en paralelo, donde el número de procesos a bifurcar debe ser limitado. El uso típico es un descargador que recupera cientos/miles de archivos.
Primero necesitas instanciar el ForkManager con el constructor “new”. Debe especificar el número máximo de procesos a crear. Si especifica 0, entonces NO se hará ningún fork; esto es bueno para propósitos de depuración.
A continuación, use $pm->start para hacer el fork. $pm devuelve 0 para el proceso hijo, y child pid para el proceso padre (vea también “fork()” en perlfunc(1p)). El “and next” se salta el bucle interno en el proceso padre. NOTA: $pm->start muere si el fork falla.
NOTA: No puede usar $pm->start si ya está en el proceso hijo. Si desea gestionar otro conjunto de subprocesos en el proceso hijo, debe instanciar otro objeto Parallel::ForkManager.
Instanciar un nuevo objeto Parallel::ForkManager. Debe especificar el número máximo de procesos hijo a bifurcar. Si especifica 0 (cero), no se bifurcará ningún hijo. Esto está pensado para propósitos de depuración.
Bifurcación Perl
Sin embargo, cuando lo ejecuto así, todos los proyectos hijos se ejecutan, pero el script principal sale prematuramente, incluso antes de que los hijos estén completos, tampoco da ningún mensaje de error. También intenté ejecutarlo borrando $pm ->finish;, pero en ese caso, el script se queda atascado y espera eternamente hasta que los hijos terminan.
Estoy seguro de que estoy haciendo algo mal con el gestor de bifurcaciones (que nunca he usado antes). Mi objetivo sería sólo usarlo para paralelizar mis trabajos pero luego esperar hasta que TODOS ellos estén completos, y luego seguir adelante en mi script.
bsub ya es parte de un framework para computación paralela. El comando bsub en sí mismo se ejecuta rápidamente; sólo envía un trabajo a un programador de trabajos y sale. No se supone que espere a que el trabajo que está programando termine, así que todos sus procesos hijos deberían terminar rápidamente y el programa principal también saldrá rápidamente.
Si desea controlar el procesamiento paralelo usted mismo, debe ejecutar cada comando sin bsub. Si está usando bsub, entonces no debería necesitar hacer su propia bifurcación o usar un gestor de procesos en segundo plano como Parallel::ForkManager.
Inicio de sesión excelente
Información sobre el paquete, perl-Parallel-ForkManager, que se entrega con las distribuciones comunes de Linux. El paquete perl-Parallel-ForkManager está diseñado para, Simple parallel processing fork manager.
Este comando desinstalará perl-Parallel-ForkManager en el servidor. Cuando ejecute este comando, se le preguntará si está seguro de que desea eliminar perl-Parallel-ForkManager, por lo que deberá confirmar manualmente que desea hacerlo.
Este comando desinstalará perl-Parallel-ForkManager en el servidor. Cuando ejecute este comando con la opción -y, no se le pedirá que compruebe que está seguro de querer eliminar el paquete – así que asegúrese de que quiere eliminar perl-Parallel-ForkManager cuando utilice la opción -y.
Este comando actualizará perl-Parallel-ForkManager a la última versión. Cuando ejecute este comando, se le preguntará si está seguro de que desea eliminar perl-Parallel-ForkManager, por lo que deberá confirmar manualmente que desea hacerlo.
Este comando actualizará perl-Parallel-ForkManager a la última versión. Cuando ejecute este comando con la opción -y, no se le pedirá que compruebe que está seguro de querer eliminar el paquete – así que asegúrese de que quiere eliminar perl-Parallel-ForkManager cuando utilice la opción -y.