Python多处理:在worker函数中没有带while循环的输出

che*_*web 5 python

我正在探索Python多处理模块,并且不明白为什么以下代码根本不打印任何东西.如果没有while循环,程序将按预期打印Worker_1.

import multiprocessing, time

def worker1():
    print 'Worker_1'
    while 1:
        print 'Worker_1'
        time.sleep(3)
    return

if __name__ == '__main__':
    jobs = []
    p = multiprocessing.Process(target=worker1)
    jobs.append(p)
    p.start()
Run Code Online (Sandbox Code Playgroud)

phi*_*hag 2

在我的系统(Linux 上的 Python 2.6&2.7)上,这按预期工作。您使用哪个平台?在某些平台(Windows)上,fork必须通过创建一个全新的进程并进行设置来进行模拟。我怀疑有些stdout没有转移到子进程。尝试:

  • 线程模块。如果您只想等待线程中的事件就足够了。
  • 在 POSIX 兼容平台(例如 BSD、Linux 或 Solaris)上运行程序
  • 输出到文件