Python常驻任务实现接收外界参数代码解析
实现一个简单的常驻任务是容易的,写一个whileTrue就可以了,但是同时要能接收外界传来的参数,就稍微有点复杂.
我第一个想到的是网络编程中的server/client模式
server作为常驻进程,可以接受client传来的各种参数进行处理
服务端:server.py
importsockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1',10001)) s.listen(5) defdo_some(): pass defdo_other(): pass deftcplink(sock,addr): print('Acceptnewconnectionfrom%s:%s...'%addr) sock.send(b'Welcome!') whileTrue: data=sock.recv(1024) time.sleep(1) ifnotdataordata.decode('utf-8')=='exit': break data_str=data.decode('utf-8') data_list=data_str.split(',') iflen(data_list)==3: do_some() else: do_other() sock.send(('processing,%s!'%s3).encode('utf-8')) sock.close() if__name__=='__main__': whileTrue: #接受一个新连接: data,addr=s.accept() #创建新线程来处理TCP连接: t=threading.Thread(target=tcplink,args=(data,addr)) t.start()
服务端实现完了,下面我们来实现客户端client.py,客户端支持传入参数或从文件读取参数,来向客户端发送请求
importsocket importsys if__name__=='__main__': param=sys.argv[1] c_list=[] ifparam.endswith('txt'): withopen(param,'r')asfile: forlineinfile.readlines(): c_list.append(line.strip().encode('utf8')) else: c=param.encode('utf8') c_list.append(c) s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('127.0.0.1',10001)) print(s.recv(1024).decode('utf-8')) fordatainc_list: s.send(data) print(s.recv(1024).decode('utf-8')) s.send(b'exit') s.close()
这样通过两个脚本,一个实现了常驻进程,一个实现了传入参数,就可以不断接受外界请求
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。