p******1 发帖数: 79 | 1 做了一个web service, 主要是算一些数。用的是webpy 的get:
urls = ('/calculate','calculate')
app = web.application(urls,globals())
class calculate :
def __init__(self):
self.hello = "hello world"
def GET(self):
getInput=web.input
b=[]
with open("file.txt","rb") as k:
for row in k:
row=row.split("t")
if len(row)==8:
b.append(row)
就是先用getinput 得到一个值,然后再读入一个数据, file.txt, 用 file.txt 的数
据和 getinput 的值做计算。由于,每次call web service 就 vall 一组值,再读数
据,再计算,上司觉得这样做每次input 数据,太耗时,他的意思是能不能把数据一次
读入,放在一边,每次call web service 的时候,哪怕有新的 getinput data 来,都
用存好的从 file.txt 来的数据,而不用再重新读入,这样可以减少i/o所用的时间。
我觉得好像不行。
他给我看这个网页:
http://www.tutorialspoint.com/python/python_classes_objects.htm
意思是用 class, instance 总是可以的。
大家觉得可行吗?
|
p******1 发帖数: 79 | 2 如果真像他说的可以那样,又该怎么实现呢?程序上?
【在 p******1 的大作中提到】 : 做了一个web service, 主要是算一些数。用的是webpy 的get: : urls = ('/calculate','calculate') : app = web.application(urls,globals()) : class calculate : : def __init__(self): : self.hello = "hello world" : def GET(self): : getInput=web.input : : b=[]
|
d****n 发帖数: 1637 | 3 不用db的web app都是耍流氓
【在 p******1 的大作中提到】 : 做了一个web service, 主要是算一些数。用的是webpy 的get: : urls = ('/calculate','calculate') : app = web.application(urls,globals()) : class calculate : : def __init__(self): : self.hello = "hello world" : def GET(self): : getInput=web.input : : b=[]
|
w***g 发帖数: 5958 | 4 把读数据那部分放到__init__里不就行了。
【在 p******1 的大作中提到】 : 做了一个web service, 主要是算一些数。用的是webpy 的get: : urls = ('/calculate','calculate') : app = web.application(urls,globals()) : class calculate : : def __init__(self): : self.hello = "hello world" : def GET(self): : getInput=web.input : : b=[]
|
p******1 发帖数: 79 | 5 多谢。我试试。要写成一个函数,class , instance 之类的吗?我都不知道我在说啥。
【在 w***g 的大作中提到】 : 把读数据那部分放到__init__里不就行了。
|
p******1 发帖数: 79 | 6 http://stackoverflow.com/questions/7512681/how-to-keep-a-variab
我发现这个。看来这件事不是那么直接了当。
【在 w***g 的大作中提到】 : 把读数据那部分放到__init__里不就行了。
|
w***g 发帖数: 5958 | 7 我弄错了。查了下,webpy为每一个request instantiate一个object。
放到class里有点杀鸡用牛刀。最方便的办法是在定义class之前读入数据,
存到全局变量里。
啥。
【在 p******1 的大作中提到】 : 多谢。我试试。要写成一个函数,class , instance 之类的吗?我都不知道我在说啥。
|
p******1 发帖数: 79 | 8 http://stackoverflow.com/questions/16510254/public-variables-in
这篇文章的意思是说 python 没有全局变量。不过你的意思我懂了。
我有一个问题,既然是每一个request instantiate一个object,那么是不是我先要run
一个单独的程序,读入数据,存到class 里之类的, 再run web service ,是这样吗
? 多谢.
【在 w***g 的大作中提到】 : 我弄错了。查了下,webpy为每一个request instantiate一个object。 : 放到class里有点杀鸡用牛刀。最方便的办法是在定义class之前读入数据, : 存到全局变量里。 : : 啥。
|
l*******m 发帖数: 1096 | 9 what you need is a singleton
run
【在 p******1 的大作中提到】 : http://stackoverflow.com/questions/16510254/public-variables-in : 这篇文章的意思是说 python 没有全局变量。不过你的意思我懂了。 : 我有一个问题,既然是每一个request instantiate一个object,那么是不是我先要run : 一个单独的程序,读入数据,存到class 里之类的, 再run web service ,是这样吗 : ? 多谢.
|
w***g 发帖数: 5958 | 10 不用。直接在class前面给变量赋值就可以。不在class内部的代码在.py文件载入的时
候运行。
b=[]
with open("file.txt","rb") as k:
for row in k:
row=row.split("t")
if len(row)==8:
b.append(row)
class calculate :
def __init__(self):
self.hello = "hello world"
def GET(self):
getInput=web.input
run
【在 p******1 的大作中提到】 : http://stackoverflow.com/questions/16510254/public-variables-in : 这篇文章的意思是说 python 没有全局变量。不过你的意思我懂了。 : 我有一个问题,既然是每一个request instantiate一个object,那么是不是我先要run : 一个单独的程序,读入数据,存到class 里之类的, 再run web service ,是这样吗 : ? 多谢.
|
|
|
p******1 发帖数: 79 | 11 多谢。那么这样,下一次call web service 就不用再读一遍数据了吗?主要想去掉每
一次读入数据用的时间。
【在 w***g 的大作中提到】 : 不用。直接在class前面给变量赋值就可以。不在class内部的代码在.py文件载入的时 : 候运行。 : b=[] : with open("file.txt","rb") as k: : for row in k: : row=row.split("t") : if len(row)==8: : b.append(row) : class calculate : : def __init__(self):
|
p******1 发帖数: 79 | 12 多谢,singleton 就是一个单独变量吗?是什么?
【在 l*******m 的大作中提到】 : what you need is a singleton : : run
|
p******1 发帖数: 79 | 13 我看了一下 singleton ,好像是一种 class, 它可以储存数据?
http://stackoverflow.com/questions/31875/is-there-a-simple-eleg
要另外写一个python script 包括一个singleton, 把数据写进去。再另外运行 web
service 吗?
多谢!
【在 l*******m 的大作中提到】 : what you need is a singleton : : run
|
p******1 发帖数: 79 | |
c******n 发帖数: 16666 | 15 看来我已经是老流氓了。。
【在 d****n 的大作中提到】 : 不用db的web app都是耍流氓
|
p******1 发帖数: 79 | 16 多谢,按照你的意思改了下代码。发现没有提高运行速度。
感觉问题主要出在那句话上:
webpy为每一个request instantiate一个object
【在 w***g 的大作中提到】 : 不用。直接在class前面给变量赋值就可以。不在class内部的代码在.py文件载入的时 : 候运行。 : b=[] : with open("file.txt","rb") as k: : for row in k: : row=row.split("t") : if len(row)==8: : b.append(row) : class calculate : : def __init__(self):
|
p******1 发帖数: 79 | 17 多谢。怎么用db?用db 是不是快点?代码?
【在 d****n 的大作中提到】 : 不用db的web app都是耍流氓
|
p******1 发帖数: 79 | 18 今天试了一下我的这个想法,发现,完全不行。class 是不可以存储数据的。我先写了
一个 python script class, 给一个变量赋了值,把这个程序跑了一下,然后写了另
一个程序,调用统一名字的class instance ,发现根本不识别。就是说每一个python
scripts 之间是隔离开的,根本不能互相存储变量,调用。自己有点蠢。呵呵。
【在 p******1 的大作中提到】 : 我看了一下 singleton ,好像是一种 class, 它可以储存数据? : http://stackoverflow.com/questions/31875/is-there-a-simple-eleg : 要另外写一个python script 包括一个singleton, 把数据写进去。再另外运行 web : service 吗? : 多谢!
|
p******1 发帖数: 79 | |
p******1 发帖数: 79 | 20 我现在还又那个singleton 的方法没试,大家说该怎么用singleton 在这里?多谢! |
c***t 发帖数: 54 | 21 wdong 的回复是正确的。 你可能没有搞懂人家的意思吧。
跟本就不需要singleton。 |
w***g 发帖数: 5958 | 22 他试了,说速度不快。但是速度不快这个说法太抽象,一个请求花几秒,
每秒能处理多少请求都没说,那个文件有多大也没说,计算是啥我似乎也
没看明白。导致速度慢的原因太多了。无从帮起。我怀疑读那个文件根本
不是bottleneck。
【在 c***t 的大作中提到】 : wdong 的回复是正确的。 你可能没有搞懂人家的意思吧。 : 跟本就不需要singleton。
|