python 多线程 XML RPC的实现
2007-06-16 10:30
561 查看
python 中的SimpleXMLRPCServer只能支持单线程访问对象.如果想使用多线程的 SimpleXMLRPCServer.最好的办法就是继承ThreadMixIn.简单吧:)下面是代码
服务器端代码
# -*- Python -*-
#
# server.py -
#
# Copyright (C) 2007 Leo Chen (hide1713@gmail.com)
#
# $Locker: $
# $Log: header.el,v $Revision 1.1 2001/02/01 20:15:57 lasse
# Author : Leo Chen
# Created On : Sat Jun 16 10:10:28 2007
# Last Modified By: Leo Chen
# Last Modified On: Sat Jun 16 10:10:38 2007
# Update Count : 1
#
# HISTORY
#
#-*- coding: cp936 -*-
import SimpleXMLRPCServer,SocketServer
import time,thread
#The server object
class Server:
count=0
def __init__(self):
pass
def ServeMe(self):
mutex.acquire() #用mutex锁住数据
Server.count+=1 #更改静态数据
t=time.strftime("Serve at %I:%M:%S Id is ")+str(Server.count)
print "Serve Id "+str(Server.count)
mutex.release()#释放锁
time.sleep(10)
return t
#多线程实现
class RPCThreading(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
pass
global mutex
mutex =thread.allocate_lock()
server_object = Server()
server = RPCThreading(("localhost", 8888))
server.register_instance(server_object)
#Go into the main listener loop
print "Listening"
server.serve_forever()
客户端代码
# -*- Python -*-
#
# client.py -
#
# Copyright (C) 2007 Leo Chen (hide1713@gmail.com)
#
# $Locker: $
# $Log: header.el,v $Revision 1.1 2001/02/01 20:15:57 lasse
# Author : Leo Chen
# Created On : Sat Jun 16 10:10:56 2007
# Last Modified By: Leo Chen
# Last Modified On: Sat Jun 16 10:10:57 2007
# Update Count : 1
#
# HISTORY
#
import xmlrpclib
server = xmlrpclib.ServerProxy("http://localhost:8888")
id = server.ServeMe()
print id
注意.如果有共享数据.操作时要加锁.
服务器端代码
# -*- Python -*-
#
# server.py -
#
# Copyright (C) 2007 Leo Chen (hide1713@gmail.com)
#
# $Locker: $
# $Log: header.el,v $Revision 1.1 2001/02/01 20:15:57 lasse
# Author : Leo Chen
# Created On : Sat Jun 16 10:10:28 2007
# Last Modified By: Leo Chen
# Last Modified On: Sat Jun 16 10:10:38 2007
# Update Count : 1
#
# HISTORY
#
#-*- coding: cp936 -*-
import SimpleXMLRPCServer,SocketServer
import time,thread
#The server object
class Server:
count=0
def __init__(self):
pass
def ServeMe(self):
mutex.acquire() #用mutex锁住数据
Server.count+=1 #更改静态数据
t=time.strftime("Serve at %I:%M:%S Id is ")+str(Server.count)
print "Serve Id "+str(Server.count)
mutex.release()#释放锁
time.sleep(10)
return t
#多线程实现
class RPCThreading(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
pass
global mutex
mutex =thread.allocate_lock()
server_object = Server()
server = RPCThreading(("localhost", 8888))
server.register_instance(server_object)
#Go into the main listener loop
print "Listening"
server.serve_forever()
客户端代码
# -*- Python -*-
#
# client.py -
#
# Copyright (C) 2007 Leo Chen (hide1713@gmail.com)
#
# $Locker: $
# $Log: header.el,v $Revision 1.1 2001/02/01 20:15:57 lasse
# Author : Leo Chen
# Created On : Sat Jun 16 10:10:56 2007
# Last Modified By: Leo Chen
# Last Modified On: Sat Jun 16 10:10:57 2007
# Update Count : 1
#
# HISTORY
#
import xmlrpclib
server = xmlrpclib.ServerProxy("http://localhost:8888")
id = server.ServeMe()
print id
注意.如果有共享数据.操作时要加锁.
相关文章推荐
- python 多线程实现洗牌算法 (二)
- 用Python多线程实现生产者消费者模式
- python多线程实现抓取网页
- Python实现简单多线程任务队列
- 使用Python之paramiko模块和threading实现多线程登录多台Linux服务器
- python实现多线程暴力破解登陆路由器功能代码分享
- 用Python实现一个简单的多线程TCP服务器的教程
- Python 3.4.3 使用threading模块进行多线程编码实现
- python用于实现多线程异步交互之生产者消费者模型
- python多线程有几种实现方法
- Python实现的自定义多线程多进程类示例
- Python:使用threading模块实现多线程(转)
- python之多线程socket服务实现
- 【python网络编程】多线程实现多用户全双工聊天
- python paramiko实现多线程远程执行命令、多线程远程上传文件、多线程远程下载文件
- python多进程、多线程服务器和客户端的简单实现
- Python:继承Thread实现多线程
- Python多线程 - 使用_thread模块实现多线程
- python paramiko实现多线程远程执行命令、多线程远程上传文件、多线程远程下载文件
- Python:使用threading模块实现多线程