【问题标题】:IPython console not showing some outputs but showing others?IPython 控制台不显示某些输出但显示其他输出?
【发布时间】:2016-10-05 19:38:07
【问题描述】:

Win 7、x64、Python 2.7、Anaconda 4.2.0、IPython 5.1.0

我正在学习一些 multiprocessing 教程并在 IPython 控制台中工作时立即遇到问题。下面的代码...

import multiprocessing

print 'hello'

def worker():
    """worker function"""
    print 'Worker'
    return


jobs = []
for i in range(5):
    p = multiprocessing.Process(target=worker)
    jobs.append(p)
    p.start()

我期待...

hello
worker
worker
worker
worker
worker

但我得到了..

hello

为什么 worker 函数的输出没有显示在 IPython 控制台中?

编辑:当从 Anaconda 命令行运行时,它会在 print 'Worker' 行出现语法错误而退出,但从 Python 控制台运行时,如果我一直按 Enter 键,则会按预期运行。

编辑 2:现在可以在 Anaconda 命令窗口中使用(我安装了错误的 Python)。问题似乎不仅限于此代码。任何并行化函数中的任何打印语句都不会出现在 IPython 控制台中。

【问题讨论】:

  • 顺便说一句,所以需要 2 个换行符才能使文本出现在新行上。使用代码格式来解决这个问题。
  • 我怀疑这是因为程序在你给工人打印的机会之前就结束了。
  • 您可以通过阻止程序以某种方式结束来测试它,例如在启动作业后要求用户输入。
  • 我刚试过但没用。代码在 Python 控制台中按预期运行。
  • 嗯。对不起。那我不知道。

标签: python ipython python-multiprocessing


【解决方案1】:

试试这个:

for i in range(5):
    p = multiprocessing.Process(target=worker)
    jobs.append(p)
    p.start()
    p.join()

我怀疑 ipython 在主进程/功能完成后会结束子进程,join 应该有助于防止这种情况发生。

【讨论】:

  • join() 无效。这似乎是 IPython 控制台没有打印并行函数内的任何内容的问题
猜你喜欢
  • 1970-01-01
  • 2015-02-22
  • 2014-09-06
  • 1970-01-01
  • 2020-03-13
  • 2018-09-14
  • 2012-05-19
  • 1970-01-01
  • 2023-02-18
相关资源
最近更新 更多