Python 多进程未在 Fedora 中创建新进程

Python multiprocessing not creating new processes in Fedora

我正在学习 Python 2.7 中的多处理。我在 Windows 7 和 Fedora 20 中都尝试了以下代码。

代码示例

import multiprocessing
import time

def worker():
    name = multiprocessing.current_process().name
    print name, 'Starting'
    time.sleep(10)
    print name, 'Exiting'
    
if __name__ == '__main__':
    worker_1=multiprocessing.Process(target=worker)
    worker_2=multiprocessing.Process(target=worker)
    
    worker_1.start()
    worker_2.start()

在任务管理器的 Windows-7 中,我可以看到 3 python 个进程 运行ning.

在 Fedora-20 中使用命令 top | grep python 时,我只能看到一个 python 进程 运行ning.

难道在Linux中,操作系统不允许多处理?

如果多处理程序 运行 与普通程序一样,那么为什么人们更喜欢 multiprocessing 而不是 Threading

问题不在于 Python,而在于使用 top 命令。默认情况下,top 仅显示适合单个屏幕的进程。当您的工作进程处于睡眠状态时,它们占用的资源很少并且落后。因此,它们不会作为 grep 的结果出现。

您可以使用 ps aux 命令来验证工人是否已创建,或者您可以使用 top-b 选项,用于重定向 top 的输出。

top -b | grep python

来自man top

-b : Batch mode operation Starts top in 'Batch mode', which could be useful for sending out- put from top to other programs or to a file. In this mode, top will not accept input and runs until the iterations limit you've set with the '-n' command-line option or until killed.