perl 多线程及信号控制
来源:互联网 发布:系统修复软件 编辑:程序博客网 时间:2024/06/18 11:24
#!/usr/bin/perluse strict;use warnings;use threads;use Thread::Semaphore;my $max_thread = 5;my $semaphore = Thread::Semaphore->new($max_thread);sub TestFun{$semaphore->up();}for(my $index = 1; $index <= 10; $index ++){$semaphore->down();my $thread = threads->create(\&TestFun);$thread->detach();}WaitQuit();<pre name="code" class="plain">sub WaitQuit{my $num = 0;while($num < $max_thread){$semaphore->down();$num ++;}}
#!perluse warnings;use strict;use threads;use Thread::Semaphore;die "perl $0 <thread> <blastConfig> <pep || dna>perl $0 3 blast.config dna\n" if @ARGV != 3;my $max_thread = $ARGV[0];my $semaphore = Thread::Semaphore->new($max_thread);mkdir "compliantFasta";chdir "compliantFasta";open FA, "../$ARGV[1]" or die $!;while(<FA>){chomp;my @tmp = split;$semaphore->down();my $thread = threads->create(\&adjust, $tmp[0], $tmp[1]);$thread->detach();}&wait;chdir "..";my $len = 0;my ($type, $p);if($ARGV[2] =~ /dna/i){$len = 30;$type = "F";$p = "blastn";}elsif($ARGV[2] =~ /pep/i){$len = 10;$type = "T";$p = "blastp";}`orthomclFilterFasta compliantFasta $len 20`;`formatdb -i goodProteins.fasta -p $type`;mkdir "splitBlast";`perl split_fasta.pl goodProteins.fasta 8 splitBlast/blast`;my @blast = `ls splitBlast/*`;my $sp2 = Thread::Semaphore->new(8);foreach my $i(@blast){chomp($i);$sp2->down();my $thread = threads->create(\&blast, $i, $p, $ARGV[0]);$thread->detach();}&wait2;`cat splitBlast/*.out > all.blast`;`orthomclBlastParser all.blast compliantFasta > similarSequences.txt`;`rm all.blast -rf`;sub blast{my ($f, $t, $p) = @_;`blastall -p $t -i $f -d goodProteins.fasta -m 8 -F F -b 1000 -v 1000 -a $p -o $f.out`;$sp2->up();}sub wait2{my $num = 0;while($num < 8){$sp2->down();$num ++;}}sub adjust{my ($label, $path) = @_;`orthomclAdjustFasta $label $path 1`;$semaphore->up();}sub wait{my $num = 0;while($num < $max_thread){$semaphore->down();$num ++;}}
0 0
- perl 多线程及信号控制
- perl 多线程及信号控制
- linux多线程及信号处理
- linux多线程及信号处理
- linux多线程及信号处理
- linux多线程及信号处理
- perl中的控制语句及函数定义
- linux多线程及信号处理【转】
- java多线程实现及控制
- perl多线程
- perl多线程
- perl多线程
- perl 多线程
- Perl SIG信号处理
- perl SIG 信号处理
- Perl使用用户自定义信号SIGUSR1/2来控制父子进程
- 多线程,信号!!!
- 多线程信号
- 触发器判断更改的行或列
- android内置浏览器不支持websocket的解决方法
- Android 打造炫目的圆形菜单 秒秒钟高仿建行圆形菜单
- -boundingRectWithSize:options:attributes:context:用法
- 基础的数论知识
- perl 多线程及信号控制
- 解析apache的httpd.conf配置内容
- Andoird 监听开机广播和关机广播
- 为接下来的3年而奋斗
- 建立本类特有的判断对象是否相同的依据
- java CyclicBarrier
- iOS App Icons for iOS 8
- mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法
- 什么是脏读,不可重复读,幻读