Git for Windows Python 打印在 DEBUG/LOG 时也不起作用?
Git for Windows Python print not working when DEBUG/LOG too?
当我 运行 我的 Python 脚本时,我的打印语句没有写入 output/screen (见下面的输出)。但是,在正常的 Windows console/prompt(和 macOs)中它可以工作:日志和打印消息都写入标准输出(混合)。
DEBUG:session_storage:session:getter: MainThread
DEBUG:urllib3.connectionpool:Resetting dropped connection: example.com
DEBUG:urllib3.connectionpool:https://example.com:443 "GET /QW/7720d5b252de HTTP/1.1" 200 1073
before api init
!!setting session
b
after api init
after request init
Process X-1 is running.
Got a valid value from queue
当我使用 CRTL-C 时,会打印 'before api init' 之后的文本(因此在程序执行后)。
代码:
# SETUP LOGGING
logging.basicConfig(level=logging.DEBUG)
def main():
#another process is created via multiprocessing (process duplicated?)
...
logger = logging.getLogger(__name__)
if __name__ == '__main__':
main()
可能与多处理部分有关?
很可能 输出缓冲 是罪魁祸首。尝试冲洗,应该会显示消息
# for stdout
sys.stdout.flush()
# for stderr
sys.stderr.flush()
当我 运行 我的 Python 脚本时,我的打印语句没有写入 output/screen (见下面的输出)。但是,在正常的 Windows console/prompt(和 macOs)中它可以工作:日志和打印消息都写入标准输出(混合)。
DEBUG:session_storage:session:getter: MainThread
DEBUG:urllib3.connectionpool:Resetting dropped connection: example.com
DEBUG:urllib3.connectionpool:https://example.com:443 "GET /QW/7720d5b252de HTTP/1.1" 200 1073
before api init
!!setting session
b
after api init
after request init
Process X-1 is running.
Got a valid value from queue
当我使用 CRTL-C 时,会打印 'before api init' 之后的文本(因此在程序执行后)。
代码:
# SETUP LOGGING
logging.basicConfig(level=logging.DEBUG)
def main():
#another process is created via multiprocessing (process duplicated?)
...
logger = logging.getLogger(__name__)
if __name__ == '__main__':
main()
可能与多处理部分有关?
很可能 输出缓冲 是罪魁祸首。尝试冲洗,应该会显示消息
# for stdout
sys.stdout.flush()
# for stderr
sys.stderr.flush()