我有这个代码,通过套接字监听命令“更新播放列表”。 当它得到这个命令时,它知道数据库中的播放列表已经更新,它连接到数据库并下载新的播放列表,然后开始播放这些文件。 我试图找到最好的方法,因为它获取命令,然后调用Media_Player函数,它会播放播放列表中的所有视频,然后再返回到侦听套接字。Python代码,我应该线程?该怎么办?
在是否已发送另一个“更新播放列表”命令的平均时间,这个命令的发送者得到一个错误,因为这段代码不会被监听。我希望媒体播放器能够不间断播放,但它也必须不断收听,以防已被告知添加了新的播放列表。
然后,如果一个新的播放列表已添加,它会知道,当在播放列表中的一个文件播放完毕,可以切换到新的播放列表,然后继续前进。
我不知道该怎么做,我想我可以在一个过程中完成所有工作,并为播放列表中的每个文件生成一个新线程,这样可以直接回到听,但是我想怎么知道线程何时完成,因为播放列表中的每个文件的长度都不相同。
在功能listen_serv()看行“回归数据”而且,这是否意味着它不关闭,因为它返回的连接?
# Echo server program
import socket
import time
import Database as DB
def listen_serv():
HOST = '' # Symbolic name meaning all available interfaces
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.sendall('OK')
return data
conn.close()
while 1:
val= listen_serv()
if val=='Updated Playlist':
PlayList = DB.get_play_list()
Media_Player(PlayList)#This isnt implemented yet
您是否知道Python的Global Interpretor Lock问题?一次只能运行一个线程。你最好使用多处理库。 – octopusgrabbus