Perl-你能在多台机器上运行线程吗?

Perl-你能在多台机器上运行线程吗?,perl,parallel-processing,Perl,Parallel Processing,我想知道是否可以在多台机器上用Perl运行线程。我在集群环境中工作,需要并行运行一些进程,但无法使用MPI。 如果线程不能跨机器使用,那么有没有其他替代方案可以让我做类似的事情,而不需要特殊的模块?我在一两周前偶然发现,虽然不能跨单独的机器,但它允许常规程序利用多核,从而有助于缩短时间。可能有助于加快您所做的任何事情。我在一两周前偶然发现了它,而不是在单独的机器上,它允许常规程序利用多个内核,从而有助于缩短时间。Perl中的线程(和分支)与父线程/进程绑定在同一台计算机上,因此没有跨计算机线程/

我想知道是否可以在多台机器上用Perl运行线程。我在集群环境中工作,需要并行运行一些进程,但无法使用MPI。 如果线程不能跨机器使用,那么有没有其他替代方案可以让我做类似的事情,而不需要特殊的模块?

我在一两周前偶然发现,虽然不能跨单独的机器,但它允许常规程序利用多核,从而有助于缩短时间。可能有助于加快您所做的任何事情。

我在一两周前偶然发现了它,而不是在单独的机器上,它允许常规程序利用多个内核,从而有助于缩短时间。Perl中的线程(和分支)与父线程/进程绑定在同一台计算机上,因此没有跨计算机线程/分支。也就是说,您可以分别使用异步事件循环框架和协同例程、协同线程框架的/模块、消息传递扩展,它们允许您创建一个节点网络,在一台或多台机器上执行不同的任务。有关详细信息,请参阅

至于不需要特殊模块的替代方案(我想,您指的是perl发行版中没有的模块),您可以为您的任务编写一个守护进程,并让它们通过TCP或UDP进行通信。除此之外,可能需要至少几个未安装Perl的模块,但可以从CPAN获得。

Perl中的线程(和分支)与父线程/进程绑定到同一台计算机,因此没有跨计算机线程/分支。也就是说,您可以分别使用异步事件循环框架和协同例程、协同线程框架的/模块、消息传递扩展,它们允许您创建一个节点网络,在一台或多台机器上执行不同的任务。有关详细信息,请参阅

至于不需要特殊模块的替代方案(我想,您指的是perl发行版中没有的模块),您可以为您的任务编写一个守护进程,并让它们通过TCP或UDP进行通信。除此之外,可能需要至少几个未安装Perl的模块,但可以从CPAN获得。

看看多机器作业管理器队列。它确实需要特殊的模块;我在这里回答“以防万一”,您实际上可以使用其他模块/基础设施

有一些Perl绑定,我成功地将其用于希望在请求程序或工作进程可能驻留在多台机器上的环境中完成特定任务的项目中。对于一台机器和一个请求者上的多个工作进程也可以很好地工作(例如:某个web scraper从任何工作者解析的页面请求所有链接,但希望保持对结果的控制)

它的工作方式是创建一个“worker”Perl程序,该程序具有许多子例程,这些子例程执行您希望以分布式方式执行的操作。您可以在您想要的任何机器上启动这些辅助程序,并将它们连接到一个(或多个)主gearman“管理器”上。 然后创建一个请求程序(gearman client)Perl程序,该程序将执行请求。这也可以在任何机器上运行,并将联系主gearman经理,请求完成一些工人的特定操作。任何工作人员都会这样做,您的请求者将返回结果

如果您的请求者不需要返回结果,但“只是”需要执行一项任务,请查看具有类似体系结构但不提供将工作人员的消息返回到请求者的工具的IIRC。

查看一个多机器作业管理器队列。它确实需要特殊的模块;我在这里回答“以防万一”,您实际上可以使用其他模块/基础设施

有一些Perl绑定,我成功地将其用于希望在请求程序或工作进程可能驻留在多台机器上的环境中完成特定任务的项目中。对于一台机器和一个请求者上的多个工作进程也可以很好地工作(例如:某个web scraper从任何工作者解析的页面请求所有链接,但希望保持对结果的控制)

它的工作方式是创建一个“worker”Perl程序,该程序具有许多子例程,这些子例程执行您希望以分布式方式执行的操作。您可以在您想要的任何机器上启动这些辅助程序,并将它们连接到一个(或多个)主gearman“管理器”上。 然后创建一个请求程序(gearman client)Perl程序,该程序将执行请求。这也可以在任何机器上运行,并将联系主gearman经理,请求完成一些工人的特定操作。任何工作人员都会这样做,您的请求者将返回结果


如果您的请求者不需要返回结果,但“只是”需要执行一项任务,那么可以看看哪个具有类似的体系结构,但不提供将工作人员的消息返回请求者的工具,IIRC。

检查网格::机器。

检查网格::机器。

…为什么要使用perl来完成此任务?这听起来像是一个错误的工具……为什么要使用perl来完成这项工作?这听起来是一个错误的工具。我曾经编写过一个
rfork($hostname)
函数,但是它有一系列的要求,当然包括目标机器是相同的硬件。但它确实做到了一切,包括完美的
fork()
语义。它是用C编写的,而不是Perl.Plan 9,一些BSD已经有了rfork函数(但不是“远程fork”)。至于fork语义,不确定如何跨主机边界共享文件描述符和指针,是吗