使用multiprocessing.Process()时在python shell中打印

时间:2017-04-20 11:08:25

标签: python python-multiprocessing

我制作了以下脚本,该脚本与可用的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语句进行调试时都不必从终端运行脚本?

0 个答案:

没有答案