并行计算的强大

最近在处理一批数据,10的8次方,处理完毕大概要一个月,并且这个程序占用的CPU只有一个(我从来没有注意到这个问题啊啊啊)。

突然师兄提醒我可以把10的8次方条数据拆成10个10的7次方,作为10条任务并行处理,我艹,三天就跑完了啊,坑爹呢这是我之前怎么没想到呢混蛋!!

 

以后单任务的程序一定要注意下CPU的使用情况。

 

并行处理也有个简单的方法,就是把原始文件给切割后提交,让队列调度程序给你并行调度就ok了。大家不要拍砖啊,这个玩意儿还是挺有用处的。

下面这个破脚本,哦,是perl脚本,用来切割文件的。我这里讲某个文件切割成,每4000条数据一个文件,每1000个文件一个文件夹,闲话少说,上酸菜:

#!/usr/bin/perl -w
# Program name: filter_pro.pl
# Author      : bbsunchen
# Contact     : bbsunchen at gm*il.com
# Date        : 11/10/2011
# Last Update : 11/10/2011
# Reference   : Please cite our following papers when you are using this script.

# Description : 

#===============================================================================================================
use warnings;
use strict;
use Getopt::Long;
use Cwd qw(abs_path);
use File::Basename qw(dirname);

my %opts;
GetOptions(\%opts,"dir:s");
my $usage= <<"USAGE";
	Program: $0
	INPUT:
		-dir        full path of file

	OUTPUT:
USAGE
die $usage unless ($opts{dir} && -e $opts{dir});

my $cwd;
if ($opts{dir} =~ m{^/})
{
  $cwd = dirname($opts{dir});
}
else
{
  $cwd = dirname(abs_path($opts{dir}));
}
open DIR, $opts{dir};
my $seq_num = 0;
my $title = "";
my $data = "";
while(<DIR>)
{
	$seq_num++;
	if($seq_num % 2 != 0)
	{
		$title = $_;
		next;
	}else
	{
		$data = $_;	
	}
	my $decide_path = 0;
	if($seq_num % 2 == 0)
	{
		$decide_path = $seq_num / 2; 
	}else
	{
		$decide_path = int($seq_num / 2) + 1;
	}
	
	my $file_name = int($decide_path / 4000);
	my $path_name = int($file_name / 1000);
	my $temp_path = "$cwd/$path_name";
	mkdir $temp_path,0775 unless (-e "$temp_path");
	die $! unless ($opts{dir} && -e $opts{dir});
	open OUT, ">> $temp_path/$file_name.fa";
	print OUT $title;
	print OUT $data;
	close OUT;
}
close DIR;
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值