perl – Parallel :: ForkManager()模块是否支持全局变量的同步
发布时间:2020-12-15 21:42:27 所属栏目:大数据 来源:网络整理
导读:我对Perl中的这个 Parallel::ForkManager模块很新,它有很多学分,所以我认为它支持我需要的东西,我还没想到. 我需要做的是在每个子进程中,它根据每个子进程中计算的键值将一些更新写入全局哈希映射. 但是,当我继续在for循环之外声明一个哈希映射并期望在循环
我对Perl中的这个
Parallel::ForkManager模块很新,它有很多学分,所以我认为它支持我需要的东西,我还没想到.
我需要做的是在每个子进程中,它根据每个子进程中计算的键值将一些更新写入全局哈希映射. 有谁知道如何编写这样一段代码来做我想要的? 解决方法
这不是Perl特定的问题,而是理解Unix风格的进程.分叉新进程时,进程之间默认不共享任何内存.根据您的需要,有几种方法可以达到您想要的效果.
一种简单的方法是使用像BerkeleyDB这样的东西将哈希绑定到磁盘上的文件.绑定哈希可以在fork之前初始化,然后每个子进程都可以访问它. BerkeleyDB文件旨在安全地同时从多个进程访问. 更复杂的方法是使用某种形式的进程间通信.有关实现此目的的所有细节,请参阅perlipc联机帮助页,其中详细介绍了Perl支持的几种IPC方法. 如果你的Perl支持它,最后的方法是使用线程并在它们之间共享变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |