在python中,使用redispy和多处理模块,为什么每个进程都是不同的fd?在
测试代码:
# xiaorui.cc
import time
import multiprocessing
import redis
r = redis.Redis(host='127.0.0.1', port=6379, db=0)
def func(msg):
for i in xrange(30):
time.sleep(1)
print r.keys()
return "done " + msg
if __name__ == "__main__":
pool = multiprocessing.Pool(processes=4)
result = []
for i in xrange(4):
msg = "hello %d" %(i)
result.append(pool.apply_async(func, (msg, )))
pool.close()
pool.join()
for res in result:
print res.get()
print "Sub-process(es) done."
试验结果:
^{pr2}$为什么每个过程的redis conn fd不同?在我的认知中,只有在lazy模式下创建redis connect,就会出现不同的redis fd。
而且,所有子进程都是共享的r对象(redis conect fd)。在
每个进程需要单独连接到Redis。并且单个出站端口将仅由单个进程使用。每个端口都有自己的进程。在
相关问题 更多 >
编程相关推荐