我有一个关于进程间文件句柄共享资源的问题。
这是我的测试代码: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"
p = MyProcess(queue)
p.start()
然后我得到一个KeyError,如下所示:
^{pr2}$
我想当我把File()对象放入队列时,对象被序列化了,文件句柄不能被序列化,所以我得到了KeyError:
有人知道吗?如果我想用文件句柄属性共享对象,我应该怎么做?在