gpt4 book ai didi

perl - Parallel::ForkManager() 模块是否支持全局变量同步?

转载 作者:行者123 更新时间:2023-12-04 06:28:48 27 4
gpt4 key购买 nike

我对此很陌生Parallel::ForkManager Perl 中的模块,它有很多功劳,所以我认为它支持我需要的东西,但我还没有弄清楚。

我需要做的是在每个子进程中,它根据每个子进程中计算的键值将一些更新写入全局哈希映射。
但是,当我继续在 for 循环之外声明哈希映射并期望哈希映射在循环后更新时,结果哈希映射保持为空。
这意味着尽管循环内的更新成功(通过打印出值),但在循环外却不是。

有谁知道如何编写这样一段代码来满足我的需求?

最佳答案

这实际上并不是 Perl 特有的问题,而是理解 Unix 风格进程的问题。当你fork一个新进程,默认情况下进程之间不共享任何内存。有几种方法可以实现你想要的,这取决于你需要什么。

一种简单的方法是使用类似 BerkeleyDB将哈希绑定(bind)到磁盘上的文件。绑定(bind)的哈希可以在你 fork 之前初始化,然后每个子进程都可以访问它。 BerkeleyDB 文件旨在安全地同时从多个进程访问。

一个更复杂的方法是使用某种形式的进程间通信。有关实现这一目标的所有血腥细节,请参阅 perlipc手册页,其中详细介绍了 Perl 支持的几种 IPC 方法。

如果您的 Perl 支持,最后一种方法是使用线程并在它们之间共享变量。

关于perl - Parallel::ForkManager() 模块是否支持全局变量同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2293587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com