这几次在各种试python的multiprocessing模块里的Pool命令。
不过由于时间限制,而且没有系统的书,只有网上零碎的资料,所以也没学透彻。
有个现在还不明白原因的现象:对于需要知道结果(即要用get()来获得函数return出来的值)的情况,使用异步并行的pool.apply_async能正常工作;对于不需要知道结果的情况(函数没有return东西),使用pool.apply_async的话,程序会把本该运行的那段for循环break掉,只进行第一次循环就算了,这时候如果改成同步的pool.apply,就没事了。map之前试过,报错报得一塌糊涂,而且我的传递参数通常不止一个,要用map的话还得partial一下,所以后来就懒得试了。
至于“同步”和“异步”指的是什么,网上的零散资料说是子线程完成任务后是否阻塞主线程的区别。而何谓“阻塞主线程”,我理解得不是那么透。
先记一下,有空再研究。
网友评论