python进程池与元组

来源:互联网 发布:bms算法 编辑:程序博客网 时间:2024/05/17 07:10

刚接触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