免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: zhagnqiang829
打印 上一主题 下一主题

改进下程序 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-11-14 09:26 |只看该作者
我用的是5.14
弱弱问下改成5.14,是不把say改成print就可以。
运行有结果,就输出格式不对。
#!/usr/bin/perl

#use 5.14;
use threads;

open my $d, '1.txt';
open OUT, '>3.txt';
my $s = <$d>;
chomp $s;
my ( $p, $ta, $x, $in, @th ) = ( 20, '', 0 );
my $i = int( length($s) / $p ) + 1;

for ( 1 .. $p ) {
    my $sp = substr( $s, $x, $i );
    $x += $i;
    $in = $ta . $sp;
    push @th, threads->create( \&that );
    $ta = substr( $sp, -7, 7 );
}

my ( @r, %k );
push @r, $_->join for @th;

for (@r) {
    my %h = %$_;
    $k{$_} += $h{$_} for keys %h;
}

#say "$_\t$k{$_}" for sort keys %k;
print OUT "$_\t$k{$_}" for sort keys %k
sub that {
    my %h;
    for ( 0 .. length($in) - 8 ) {
        $h{ substr( $in, $_, 8 ) }++;
    }
    return \%h;
}
回复 10# rubyish


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
12 [报告]
发表于 2012-11-14 09:51 |只看该作者
  1. print OUT "$_\t$k{$_}\n" for sort keys %k
复制代码

论坛徽章:
0
13 [报告]
发表于 2012-11-14 10:00 |只看该作者
优化过的代码,运行起来还是
Out of Memory”(内存不足)错误信息。
文件大小1.5G左右,C++能跑起来,就是太慢了。
回复 12# rubyish


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
14 [报告]
发表于 2012-11-14 10:02 |只看该作者
本帖最后由 rubyish 于 2012-11-14 06:03 编辑

回复 13# zhagnqiang829
  1. my ( $p, $ta, $x, $in, @th ) = ( 10, '', 0 );
复制代码

论坛徽章:
0
15 [报告]
发表于 2012-11-14 10:17 |只看该作者
谢谢你,
还是不行。
可能是机子配置问题吧,我自己想办法吧。回复 14# rubyish


   

论坛徽章:
1
青铜圣斗士
日期:2015-12-05 20:21:44
16 [报告]
发表于 2015-11-30 18:46 |只看该作者
你好,我在算一批序列的六联体个数和频率,但是不太会编程,可以把你的8联体的给我吗?先谢谢啦。在WINDOWS下运行吗?

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
17 [报告]
发表于 2015-11-30 20:16 |只看该作者
比如下面序列:文件data
  1. gtatagaaatcatcgatttttcaggaaaagcaagaaagatcggtttaaaaaattatgaaattttattttaaaaatcgaaaaatcaacaaaaaaaatcgaaattttagaatttttctaaaatcggtagttttcgaaataaaataaaaatgttattttaaaaattattttaaaaaatttcgagaaattcaaaaatcgaacagaaatgttcgattttttgctacagtgcattttttttccacttctacgactttaaaggggggcgcatttatgcggaagggtcttgccgtgcacatagtcatcatttttaacaaagtctgctcaaaattcgcggagatcacgcgtagatcacaattaatttgtgaaaaagcaacagaaatacgaaatatgggataaatattttgtgatcttcatgtgatctacgcgaattttacacagaaactgctaaaaatgatgactaaatgcgcggcaagacccttccgcataaatgctcccccctttaaagtcgtagaagtaggaaaaaatgcactgtatggtgaatttgaaaattttctaaaaatccgaataatttagtatattggggtttcgacgaaaaatgccaatttttcagtaatttctggtcttttctaaaaaaatctacatatttcagatctcttcctccttttccgagttttttcgttattttttctaaactcacagtatattagcgaattttcaacaaattcgacaaaaaattctgactgttttctagaaaaaaaaaaaggcggcatgcgcaagtttcaaaatttgccgcacacctctgggcattaccttgaaagtatcaatggaaaagtgtcgcaagatttaattttctgatattccccccccccctcccgttttacttgtttctaggtttgagtttacttaaattaataacaaaactgggagatatatgctcgaaaattagacagaatctctgcctggacgatttctaggctacgccgtcattcccatagttttcataatctttcggctcagtgatcgaa
复制代码
可以用上pypy加速
  1. #!/usr/bin/python2
  2. F = 'data'
  3. S = open(F).read().rstrip()
  4. D = {}

  5. for i in xrange(0, len(S) - 8 + 1):
  6.     K = S[i:i + 8]
  7.     D.setdefault(K, 0)
  8.     D[K] += 1

  9. for k in sorted(D):
  10.     print k, D[k]
复制代码
最终这个
结果的形式
  1. aaaaaaaa 5
  2. aaaaaaag 1
  3. aaaaaaat 2
  4. aaaaaagg 1
  5. aaaaaatc 2
  6. aaaaaatg 1
  7. aaaaaatt 3
  8. aaaaagca 1
  9. aaaaaggc 1
  10. aaaaatca 1
  11. aaaaatcc 1
  12. aaaaatcg 3
  13. ............
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP