执行相同的过程N次,如果在X秒内没有完成,则终止它

时间:2017-12-25 18:41:22

标签: python-3.x multiprocessing

我有一个外部进程,需要一些随机时间才能运行,最后它会在标准输出中输出一些输出。

我需要编写一个python进程,运行这样的外部进程N次;在X秒之后,对于已经终止的每个进程,它必须收集输出,并且对于尚未终止的每个进程,它必须将其终止。

你会怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用内置API:

http://strftime.org/
https://docs.python.org/3.5/library/time.html

start_time = time.time()
# your code
elapsed_time = time.time() - start_time
time.strftime("%H:%M:%S", time.gmtime(elapsed_time))
#'00:00:02'

要杀死这个过程,我不知道你是如何处理的:

您可以使用:

import subprocess, signal 
p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE)
out, err = p.communicate()
for line in out.splitlines():
   if 'iChat' in line:
   pid = int(line.split(None, 1)[0])
   os.kill(pid, signal.SIGKILL) # -9 (equivalent.)

答案 1 :(得分:0)

您可以使用apscheduler模块。一个(快速和肮脏)的例子:

import { Component } from '@angular/core';
import { AuthenticationService } from './authentication.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  providers: [ AuthenticationService ]
})
export class AppComponent {

  constructor(private authService: AuthenticationService) { }

  login(): void {
    this.authService.login().subscribe(data => {
      alert(data);
    });
  }

}