传递 redis 对象给子进程,遇到的问题,求指点

2016-09-28 19:38:55 +08:00
 salmd
import redis
from multiprocessing import Pool
import random
import time

def redisInput(redisOb):
    time.sleep(2)
    print 'test process start'
    print redisOb


if __name__ == '__main__':
    print 'Input...'
    redisOb = redis.Redis(host='10.237.36.108', port=3333, db=0)
    p = Pool(5)
    for x in range (5):
        args = (redisOb,)
        #args = (1,)
        print type(args)
        p.apply_async(redisInput,args)

    p.close()
    p.join()
    print 'The end'

问题出在 p.apply_async 传递的参数上,如果把 args = (redisOb,),改成 args = (1,);子进程就正常了

求各位达人能帮忙看一下。

1928 次点击
所在节点    Python
5 条回复
fds
2016-09-28 19:48:35 +08:00
……不能传这个吧。你可以把 redis 的参数传进去,每个进程自己创建连接。
kfll
2016-09-28 20:17:13 +08:00
salmd
2016-09-28 21:23:47 +08:00
@fds 已经这么实现了,只是好奇这个问题
salmd
2016-09-28 21:46:54 +08:00
@kfll 还请帮忙指出大概位置或者关键字,渣英语实在没找到
BiggerLonger
2016-09-28 22:22:29 +08:00
pickle

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/309608

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX