一些日常。
今天下午有些破防。
起因是自己精心设计并编写的一个程序,运行速度很慢,很久(约有6个小时)都没有完成,最后觉得浪费时间,不得不提前终止进程。请教了同事,读过github源码之后,发现并行化的官方源码只需要2小时就可以完成。其效率如此之高,以至于让我感到自己白白浪费了两天编写和优化程序。然而初看起来官方源码如此复杂,让我感到一头雾水,无从下手,更是诧异于师兄是如何精巧地将并行模块恰当地嵌入合适的位置,使得程序能够在2个小时的时间内正常运行,还能够完备且不冲突地记录运行日志。越往深入思考,越感到一个漆黑的漩涡正将自己裹挟、吞没进去。感到任务很艰难,自己很无能;痛惜时间白白浪费,担心想法没能奏效…
事实上,在接触这一项目之前,我甚至不知Python中的concurrent.future为何物。对于并发编程,也仅仅停留在本科“并行计算”课上的PPT内容。日常使用的并发就更不用说了——人肉并发或者Threading。然而由于没有需求,Threading也不经常用,日常的并发编程经验约等于零。我感到自己就是一个小白。
想到上述的“事实”,我更加破防了。刚好晚上去银行办点事,于是准备骑行过去,顺便放松一下大脑,从漩涡中挣脱出来。
骑行路上,一边听着朱广权语音播报经常犯错的导航,一边思考下午的破防体验。晚风很凉爽,甚至有点冷,让我的脑子冷静下来,发现了症结所在。想起一句话,“除了生病以外,你所感受到的痛苦几乎都是你的价值观带来的,并非真实存在”。这句话恰好解释了我今天下午的精神困境。自己代码的运行效率低,甚至有错误,一方面是刚上手,另一方面是在相关领域缺乏实践经验。同样地,不了解Python的并发模块并非自己的过错,而是因为之前的实践中缺乏并发编程的需求。因此这一经历,是一个很好的学习Python并发编程的契机。官方源码令自己一头雾水,无从下手,一方面是相关代码接触少,另一方面则是官方源码缺乏注释,可读性差。只需要多读、多运行、多与人沟通,总能够彻底明白代码的运行机理。
此外,我也发现自己代码相比之下的诸多优点——包括面向对象、易于迁移、注释完备、便于数据分析。只是下午破防之时,注意力全部集中于自己代码的不足之处,忽略掉了这些闪光点。因此,重新振作、博采众长,将官方代码的优点吸收进自己的代码中,问题即可迎刃而解。最最重要的是一鼓作气的行动力,切忌胡思乱想和精神内耗。
不知不觉间,骑到终点了。然而银行晚上关门,明天还得再跑一趟。遂重新上车,听着朱广权语音的迷糊导航,骑回家里。
这附近的餐厅不错,改天一定要来试下。