我想知道是否有可能在多台机器上运行Perl中的线程。我正在集群环境中工作,需要并行运行一些进程,但无法使用MPI。 如果线程无法跨机器使用,是否还有其他替代方案,我应该看看,这将允许我做类似的事情,而不需要特殊的模块?Perl - 你可以在多台机器上运行线程吗?
回答
我在一周或两周前偶然发现了GNU parallel
,而没有跨越单独的机器,它允许常规程序利用多个内核来缩短时间。可以帮助加快你正在做的任何事情。
Perl中的线程(和分支)与父线程/进程绑定在同一台计算机上,因此不需要跨计算机线程/分支。也就是说,您可以分别使用AnyEvent::MP/Coro::MP模块,异步事件循环框架的消息传递扩展和协作线程框架的Coro协作线程框架,从而使您可以创建一个节点网络,在一个或多个节点上执行不同的任务机器。详情请参阅AnyEvent::MP::Intro。对于不需要特殊模块的替代方案(我猜你的意思是说模块不在Perl发行版中),你可以想象为你的任务编写一个守护进程,并让它们通过TCP或UDP进行通信。除此之外的任何事情都可能需要至少一些未安装Perl的模块,但可从CPAN获得。
看看Gearman,一个多机器作业管理器队列。它确实需要特殊模块;我在这里回答“以防万一”你实际上可以使用额外的模块/基础设施。
有Perl绑定,Gearman::XS,我成功地在项目中使用它,我希望在请求者或工作进程可能驻留在多台机器上的环境中完成特定任务。也适用于一台机器和一个请求者上的多个工作进程(例如:一个特定的网络抓取工具,它要求任何工作人员解析页面的所有链接,但希望保持对结果的控制)。
它的工作方式是创建一个“worker”Perl程序,该程序具有多个子程序,可执行您希望以分布式方式执行的操作。您可以根据需要随时随地启动这些工作程序,并将其连接到一个(或多个)主减速员“经理”。 然后,您创建一个请求者(gearman客户端)Perl程序,它将执行请求。这也可以在任何机器上运行,并会联系主减速机经理要求完成一些工人的具体行动。任何工作人员都会这样做,并且您的请求者会将结果返回。
如果您的请求者不需要返回结果,但“只”需要执行任务,请改为查看TheSchwartz,该结构具有类似的体系结构,但不提供从工人获取消息返回到请求者,IIRC。
Check GRID :: Machine。
- 1. 我可以在多台机器上运行F#代理吗?
- 2. 你可以在XP机器上运行NT 4.0的Target Designer吗?
- 3. 单台机器上可以存在多少个线程池?
- 4. 你可以在你自己的服务器上运行jekyll吗?
- 5. 你可以在iPhone或机器人上运行搅拌机游戏吗?
- 6. 我可以在同一台计算机上运行两台Web服务器吗?
- 7. 你能在iOS上为每个线程运行多个runloop吗?
- 8. 我可以在Perl的DBI和Oracle上使用多线程吗?
- 9. 你可以在一个cpu核心上运行两台服务器吗?
- 10. 编码UI测试不能在一台机器上运行,但可以在另一台机器上运行
- 11. Java在另一台机器上运行线程
- 12. 你可以在HTML网页上运行python程序吗?
- 13. 我们可以在Ruby中并行运行多线程吗?
- 14. 我可以在单台PC上运行多个JVM吗?
- 15. 我们可以在同一台机器上运行两个不同执行器的gitlab运行器吗?
- 16. 我可以在同一台机器上运行visual studio 2005和visual c#2008吗?
- 17. View的绘制方法可以在Android的后台线程上运行吗?
- 18. 你可以在Windows服务器上运行多个clr实例吗?
- 19. 你可以在Linux中运行Xcode吗?
- 20. 如何在多台远程机器上运行Jython脚本?
- 21. 运行在同一台机器上的多个Java程序
- 22. 在单台机器上执行多个Solr碎片可以提高性能吗?
- 23. iPhone Dev:你可以在后台运行程序在iOS4 +中响应短信吗?
- 24. 我可以在一台计算机上同时使用Strawberry Perl和ActiveState Perl吗?
- 25. 是否可以在同一台机器上运行多个SQL Server实例
- 26. 我可以在同一台服务器上运行多个logstash实例吗?
- 27. PHP:gzdeflate在多台机器上安全吗?
- 28. 线程是否可运行?或上课?如何在后台运行线程?
- 29. 你可以在一台虚拟服务器上安装docker吗?
- 30. 是否有可以运行多线程以利用多核机器的.NET测试的测试运行器?
...为什么你会用这个perl?这听起来像是这个工作的错误工具。 – 2010-11-18 02:32:36
你看过PVM吗? – tchrist 2010-11-18 13:29:19