关闭

python进程池与元组

186人阅读 评论(0) 收藏 举报

刚接触python时 看朋友写的代码 pool.apply_async(func,(x,))

他告诉我第二个括号里是参数,逗号一定不能省

然而在后来的使用中,发现不写这个,形如pool.apply_async(func,(x,y)) 也不会错

也就渐渐认为他在胡说,后面要不需要有逗号


然而今天调试共享变量,用到了pool.apply_async(func,(x,)) 发现进程池莫名其妙的完全失效

短短十行 调了半个晚上都不懂怎么会错了 

百度了下pool的相关文章,发现后面传参用 [ ] 就可以

于是恍然大悟

其实他跟我讲的是只有一个参数的写法,把list写成了tuple,

但是定义tuple时如果只有一个元素,则必须加逗号,否则会产生歧义(括号表示元组还是单纯的括号),此时元组会退化成该单个元素本身


好吧……所以他坑了我一小下,而我也一直也稀里糊涂的这么用了


所以结论就是以后用多进程 就写成pool.apply_async(func,[args..])就好咯


ps.用pool调的方法 要在方法里用try catch捕获异常,否则出错不会报出来



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10425次
    • 积分:554
    • 等级:
    • 排名:千里之外
    • 原创:47篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    最新评论