spyder开发环境之多控制台下的多进程陷阱

Kefira ·
更新时间:2024-09-20
· 672 次阅读

       spyder是anaconda自带的一款IDE,对于数据分析来说,是一个很好用的开发环境,笔者常用spyder来做一些开发和分析工作。笔者在一次利用spyder直接运行一个多进程脚本时,同时由于想进行其他工作,所以就多开了一个console控制台,结果多进程脚本只执行到多进程语句pool.join()之前,之后便一直停滞。经过反复测试,脚本本身没有问题,最后发现,当关闭新控制台后,脚本便可以正常运行了。

       其中的原因,笔者猜测是spyder多开的一个控制台实际上是多开的一个python进程,并且可能在某些对用户隐藏的控制台层面以某种方式加了进程锁,而控制台进程优先抢占到了进程锁,只有当该进程被关闭,才会释放锁,所以一旦多开了一个控制台,那么其他控制台就不能执行多进程脚本,不然会被一直阻塞,导致程序无法运行,除非关闭控制台释放锁。当然上述只是笔者猜测,有知道具体原因的读者欢迎留言告知。

       重要的是,知道这种问题后,以后就可以避免这样的隐藏问题。避免在spyder的多控制台下执行多进程脚本,可能其他的IDE也有类似设计,以后可以多注意这种问题。所以如果要执行多进程脚本,要么只在IDE的单控制台下执行;如果同时要进行其他工作,则直接在命令行窗口下执行,可以开多个窗口,做多个工作。


作者:S_o_l_o_n



环境 进程 spyder 多进程 控制台

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章