Perl에서 서브 루틴 sub_info
을 만들었습니다. 따라서 Perl 스크립트에서는 입력 파일의 각 행을 읽고 sub_info 서브 루틴을 호출합니다. 그러나 일부 입력 행의 경우 sub_info는 실행하는 데 시간이 오래 걸립니다. 그래서 기본적으로 각 입력 행에 대해 sub_info 서브 루틴의 실행 시간을 계산하고 15 분 이상 걸릴 경우 해당 입력 행을 전달하고 다음 입력 행에 sub_info
서브 루틴을 실행하려고합니다. Perl에서 서브 루틴을 실행하는 시간을 계산하는 함수가 있습니까?Perl 서브 루틴이 너무 오래 걸리면 어떻게 중지시킬 수 있습니까?
2
A
답변
2
아마 SIG{ALRM}
및 alarm
의 조합으로 갈 것 :
use warnings;
use strict;
$|=1;
for my $i (1 .. 10) {
local $SIG{ALRM} = sub {
die;
};
eval {
alarm 5;
sub_info($i);
};
if ([email protected]) {
print "aborted\n";
}
alarm 0;
}
sub sub_info {
my $i = shift;
my $r = int(10*rand);
printf "Trying %2d for %2d seconds: ", $i, $r;
sleep $r;
print "finished\n";
}
을 alarm n
사용하면 n
초 후 SIGALRM 신호가 호출 프로세스에 전달되도록 지정합니다. 프로세스가 이러한 신호를 수신하면 $SIG{ALRM}
에 지정된 작업을 수행합니다. 위의 샘플 스크립트에서는 방금 죽습니다.
sub_info
호출에 걸리는 시간이 5 초 미만이면 die
이 호출되지 않지만 더 많은 시간이 걸리면 die
이 호출됩니다.
전체 프로세스가 죽는 것을 원하지 않으므로 sub_info
에 대한 호출을 eval
블록으로 래핑합니다. eval 블록이 종료되면 [email protected]
이 설정됩니다. 따라서 [email protected]
에서 실제 값을 확인하면 5 초를 초과 한 것을 알 수 있습니다.
관련 문제
- 1. Perl 서브 루틴이 빈 값을 반환합니다.
- 2. 루프가 오래 걸리면 받아 들일 수 없게
- 3. Perl 1,000 서브 루틴이 다시 정의되었습니다.
- 4. C에서 서브 루틴이 Fortran과 유사한 서브 루틴이 있습니까?
- 5. Perl 전역 대체는 모든 파일에 적용됩니다 - 어떻게 중지시킬 수 있습니까?
- 6. 신청서를 어떻게 중지시킬 수 있습니까?
- 7. SKPaymentTransaction을 어떻게 중지시킬 수 있습니까?
- 8. 존재하고 정의 된 Perl 서브 루틴이 있습니까? 내가 사용하는
- 9. 메서드를 호출하고 취소하고 너무 오래 걸리면 호출하는 메서드로 돌아갑니다.
- 10. 종료 시간이 너무 오래 걸리면 시간 초과 기능이 발생합니다.
- 11. 서브 루틴이 깨져
- 12. Perl에서 서브 루틴이 메소드로 호출되었는지 어떻게 확인할 수 있습니까?
- 13. maven - 단위 테스트가 너무 오래 걸리면 빌드가 실패합니다.
- 14. 각도기가 응답하는 데 너무 오래 걸리면 구성 요소를 무시하도록 구성하십시오.
- 15. 이미지를로드하는 데 너무 오래 걸리면 이미지를 바꿀 조건을 설정하십시오.
- 16. 장기간 실행되는 BigQuery 작업을 어떻게 중지시킬 수 있습니까?
- 17. 메서드가 완료하는 데 너무 오래 걸리면 시간 초과가 발생합니다.
- 18. 포스트 그레스 쿼리가 너무 오래 걸리면 때해서는 안
- 19. 경로가 너무 오래 걸릴 수 있습니까?
- 20. 실행중인 ASIHTTPNetworkQueue를 어떻게 중지시킬 수 있습니까?
- 21. 내 애플리케이션의 서비스를 어떻게 중지시킬 수 있습니까?
- 22. ELB에서 오래된 인스턴스를 어떻게 중지시킬 수 있습니까?
- 23. Internet Explorer 디버거 - 어떻게 중지시킬 수 있습니까?
- 24. 연속 이벤트 발생을 어떻게 중지시킬 수 있습니까?
- 25. iperf 서버가 종료되면 어떻게 중지시킬 수 있습니까?
- 26. 폐쇄 그룹에서 Sublime을 어떻게 중지시킬 수 있습니까?
- 27. 서브 루틴이 있지만 로컬 변수가없는 언어가 있습니까?
- 28. 너무 오래 디버깅 할 때이 오류를 어떻게 막을 수 있습니까?
- 29. 코드 실행이 너무 오래 걸리는 이유를 어떻게 알 수 있습니까?
- 30. 실행이 스팬보다 오래 걸리면 타이머 동작이 발생합니까?
투표를 재개하십시오. 이것은 프로파일 링에 대한 질문이 아닙니다. – mob