我有一个关于共享资源与进程之间的文件句柄的问题.这是我的测试代码:
from multiprocessing import Process,Lock,freeze_support,Queue
import tempfile
#from cStringIO import StringIO
class File():
def __init__(self):
self.temp = tempfile.TemporaryFile()
#print self.temp
def read(self):
print "reading!!!"
s = "huanghao is a good boy !!"
print >> self.temp,s
self.temp.seek(0,0)
f_content = self.temp.read()
print f_content
class MyProcess(Process):
def __init__(self,queue,*args,**kwargs):
Process.__init__(self,*args,**kwargs)
self.queue = queue
def run(self):
print "ready to get the file object"
self.queue.get().read()
print "file object got"
file.read()
if __name__ == "__main__":
freeze_support()
queue = Queue()
file = File()
queue.put(file)
print "file just put" …Run Code Online (Sandbox Code Playgroud) 我用python编写了一个程序,当我打开太多的tempfile时,我会得到一个例外:太多的打开文件......然后我发现windows OS或C运行时有文件句柄限制,所以,我改变我的程序使用StringIO(),但仍然不知道StringIO是否也是有限的?
嗨,我制作了一个ICAPServer(类似于httpserver),其性能非常重要.DB模块是sqlalchemy.然后我对sqlalchemy的性能进行了测试,结果发现sqlalchemy需要大约30ms将<50kb数据写入DB(Oracle),我不知道结果是否正常,或者我做了什么错误?但是,无论对错,似乎瓶颈来自DB部分.我如何才能提高sqlalchemy的性能?或者由DBA来改进Oracle?
BTW,ICAPServer和Oracle在同一台PC上,我使用了sqlalchemy的基本方法.