微课题的一个小坑

Posted by 跳跳龙 on September 23, 2017

最近在做一个关于某站的微课题,具体任务什么的就不写了。在做这个任务的时候遇到了一个小问题。就是用Java去调用之前写好的Python的某个模块,发现这个模块确实被调用起来了,但是这个是一个任务模块,要执行一个时间较长的任务,后来发现,这个任务在执行很短的时间内自己就结束了。

前前后后一直在陷入思考,而且感到十分的费解,为什么会出现这样的情况,这里还是要感谢谷歌啊,一个博主的博客提醒了我。

由于这里调用的Python文件会打印大量的信息以及Error,导致充满整个java进程。因为当你单独执行这个python程序的时候,所以的信息是打印到屏幕上的,说白了就是打印到文件里。但是java调用python的时候所有的信息并没有输出到文件中,而是放在了java的缓冲区中,也就是内存中。当申请的内存达到上限的时候,整个程序就会卡死。这也解释了为什么每次在调用的时候都会执行到任务的同一位置。 于是,我把python中关于打印的那一行注释掉了。