2015-03-16 7 views
0

У меня есть два скрипта python в виде отдельного файла. скажем, например hello.py и hello1.py. давайте считать, что мое полное время выполнения составляет 100 секунд. Поэтому я хочу, чтобы hello.py выполнялся в течение первых 60 секунд, а hello1.py - для выполнения в течение 40 секунд. Итак, как пролить его и сделать?Запустите 2 скрипта python за определенное количество времени, каждый отдельно

+0

В чем причина ограничений времени? –

+0

На самом деле я хочу запустить смешанную атаку. Половина фиктивных и наполовину неподдельных. У меня уже есть скрипты для поддельных и подлинных отдельно в python. теперь для запуска смешанной атаки я хочу выполнить hello.py сказать в течение 60 секунд и автоматически второй скрипт hello1.py должен выполняться в течение оставшихся 40 секунд. – MKA

ответ

0

Позвольте мне определить два сценария python, temp4.py и temp5.py. Содержание:

temp4.py

def f1(): 
print 'hello' 

temp5.py

def f2(): 
     print 'hello1' 

окончательный сценарий temp5.py. это будет измерять время и запускать сценарии соответственно. измените время. здесь оба сценария будут работать в течение 10 секунд.

 from temp4 import f1 
     from temp5 import f2 
     from timeit import default_timer as timer 

     start = timer() 

     while (timer()-start)<10: 
      f1() 
      print timer()-start 

     while (timer()-start)<20: #add timings here 
      f2() 
      print timer()-start 

Пожалуйста, добавьте второй раз к таймеру. Таким образом, первый раз будет 60, второй будет 100.

+0

Выполняется только первый цикл while ... и он печатает привет в течение 10 секунд ... Я хочу запустить temp4.py в течение 60 секунд и temp5.py в течение 40 секунд. – MKA

+0

проверить отредактированный код. – nEO

1

Вы можете использовать аварийные сигналы для прерывания кода после того, как он был запущен некоторое время. Преимущество заключается в том, что выполняемый код не должен знать временные рамки. Недостатком является то, что он не имеет возможности законно прекратить (хотя вы можете поймать исключение Stop для этого).

import signal 
import time 

def task(name): 
    """Generic task -- print out name once a second.""" 
    while True: 
     print(name) 
     time.sleep(1) 

class Stop(Exception): 
    """Raised to stop a running task.""" 
    pass 

def onAlarm(signum, frame): 
    """Alarm signal handler.""" 
    raise Stop 

def run(function, seconds): 
    """Run a function for a specified number of seconds.""" 

    # install our alarm handler 
    savedHandler = signal.signal(signal.SIGALRM, onAlarm) 

    # request an alarm after the specified numbers of seconds 
    signal.setitimer(signal.ITIMER_REAL, seconds) 

    # run the function 
    try: 
     function() 
    except Stop: 
     pass 

    # restore the saved timeout handler 
    signal.signal(signal.SIGALRM, savedHandler) 

# run hello for 6 seconds 
run(lambda: task("hello"), 6) 

# run hello1 for 4 seconds 
run(lambda: task("hello1"), 4) 
Смежные вопросы