我制作了以下脚本,该脚本与可用的here几乎相同。
from multiprocessing import Process
import time
import sys
def f(n):
print n
# sys.stdout.flush()
if __name__ == '__main__':
f('hello')
p = Process(target = f, args=('python',))
p.start()
p.join()
time.sleep(2)
print 'bye'
当我在python IDLE中运行脚本时,它输出:
hello
bye
而不是:
hello
python
bye
但是当我在Windows终端中运行脚本时,它会提供所需的输出。根据建议here,我尝试sys.stdout.flush()
因为我认为会有一些缓冲问题。
如何在python shell中获得所需的输出?任何建议都表示赞赏。我在win32上使用Python 2.7.9 [MSC v.1500 64位(AMD64)]。
编辑:
我仔细阅读了评论中提出的问题。我按照终端的建议运行了命令python -m idlelib.idle
,但它打开了一个python控制台和一个shell。我通过这个shell运行我的脚本,但输出仍显示在控制台而不是shell上。
如何直接获取shell上的输出,以便每次必须使用print语句进行调试时都不必从终端运行脚本?