Proceso a segundo plano mientras la aplicacion corre normalmente

oziko oziko en fusiondementes.com
Mie Mayo 12 01:07:37 CEST 2004


Que tal, estoy haciendo una reproductor de ogg utlizando pygame, esta 
aplicacion lanza una ventana que muestra las portadas y la lista de 
canciones disponibles, tiene una ventana de input donde intriduzco el 
numero de cancion que quiero reproducir, pro ejemplo el 5, entonces el 
programa reproduce la cancion 5.ogg utilizand ogg123, pero la pantalla 
de las portadas se queda congelada hasta que el repoductor termina, 
entonces se refresca y puedo volver a introducir numeros. La idea es que 
mientras se reproduce la cancion puedo yo navegar por las portadas y 
seguir introduciendo numeros que se añadiran a la cola de reproduccion. 
Como una rockola:

Ahora un poco de codigo para explicarme mejor:

while 1:
	for event in pygame.event.get():
		if event.type == pygame.QUIT: sys.exit()
		
	screen.blit(uicover1, coverrect1)
	screen.blit(uicover2, coverrect2)
	screen.blit(uicover3, coverrect3)
	screen.blit(uicover4, coverrect4)
	numero = ask(screen, "->")
	try:
		queue.append(int(numero))
	except ValueError:
		pass
	rep_ogg()
	print queue
	pygame.display.flip()


este cacho es la que refrezca la pantalla, ls funcion ask(screen,"->") 
es la ventana de input que recoge el valor y lo mete a la cola, luego el 
ciclo manda a reproducir.


def rep_ogg():
	idtrack = queue.pop(0)
	ogg=ogg_path+str(idtrack)+'.ogg'
         pid = os.fork()
         if pid == 0:
		#os.popen3(ogg)
		os.execv('/usr/bin/ogg123', ('ogg123', ogg,))
         nop, status = os.waitpid(pid, 0)
         return status

esta funcion es la que reproduce, no se como mandar la reproduccion del 
ogg en segundo plano y salir de la funcion para poder refrezcar la 
pantalla y agregar mas numeros a la lista. Ojala me puedan orientar un 
poco, gracias.




Más información sobre la lista de distribución Python-es