def volume_control(VOLUME_CHANGE_TIME,level_per_second):
for vol in range(0,VOLUME_CHANGE_TIME):
subprocess.call(['nircmd','changesysvolume',str(level_per_second)])
sleep(1)
def play_audio(REPEATS,FILENAME):
for r in range(REPEATS):
p=subprocess.Popen(["ffplay", "-nodisp", "-autoexit", FILENAME])
print "start audio"
p.communicate()
if __name__ == "__main__":
pool.apply_async(play_audio,args=[REPEATS,FILENAME])
pool = multiprocessing.Pool(2, init_worker)
try:
pool.apply_async(volume_control,args=[VOLUME_CHANGE_TIME,level_per_second])
pool.apply_async(play_audio,args=[REPEATS,FILENAME])
pool.close()
pool.join()
except KeyboardInterrupt:
print "Caught KeyboardInterrupt, terminating workers"
pool.terminate()
pool.close()
pool.join()
пока не закончит свою работу ffplay он будет принимать SIGINT а мне надо чтоб его принял пул и потушил все таски.
как так сделать подскажите пожалуйста
кстати закрытие окна консоли тоже не завершает пул, subprocess решает что трек доигрался и идет дальше по циклу :/