您的位置:首页 > 编程语言 > Python开发

python进程池与元组

2015-11-17 21:40 579 查看
刚接触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捕获异常,否则出错不会报出来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: