在python中,对多处理模块使用redispy,为什么每个进程都是不同的fd?

2024-03-28 23:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

在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)。在


Tags: inimportredisfortime进程msgresult