共享数据的长度超过共享段大小-在perl代码中获取此错误
当我试图读取csv文件并将其内容加载到共享变量中时,我在perl代码中遇到了一个错误——“共享数据的长度超过了共享段大小”。 我正在使用下面的代码-共享数据的长度超过共享段大小-在perl代码中获取此错误,perl,Perl,当我试图读取csv文件并将其内容加载到共享变量中时,我在perl代码中遇到了一个错误——“共享数据的长度超过了共享段大小”。 我正在使用下面的代码- use IPC::Shareable; my %options = ( create => 1, exclusive => 0, mode => 0666, destroy => 1, ); my $handle = tie $arr_share, 'IPC::Sharea
use IPC::Shareable;
my %options = (
create => 1,
exclusive => 0,
mode => 0666,
destroy => 1,
);
my $handle = tie $arr_share, 'IPC::Shareable', $glue, { %options } or
die "server: tie failed\n";
CSV文件超过20兆字节。我也尝试过定义size='somevalue',但它不起作用。请建议
谢谢此错误表示您的数据结构对于提供的
大小
选项来说太大
修改后,整个数据结构将使用序列化。此序列化必须适合大小由size
选项控制的共享内存块。(默认大小为1kib。)一个20mib的CSV很容易需要500 MiB的共享内存
这就引出了一个问题。。。每次更改时创建500 MiB字符串对代码有意义吗?每次提取数据时解析一个500 MiB字符串如何?这可能不是适合您的最佳方法。您正面临操作系统的限制。您需要:减少数据的大小;将数据分散到多个变量上(每个变量存储在一个操作系统共享内存段中)或将操作系统配置为增加最大共享内存段大小-这取决于您的OSI尝试将CSV文件分块读取并将每个数据块存储到单独的变量中。但有些人认为我无法获取变量中的数据块。你能给我提个建议吗。ThanksI的尝试如下-my$csv=Text::csv_XS->new({binary=>1,auto_diag=>1});打开我的$fh,“@Dumb:请不要将代码放在注释中-它(如您所见)不可读。相反,请更新您的问题并在那里添加代码。这样做的最佳方法是什么。请根据问题提出建议