Python多处理不在Fedora中创建新进程

时间:2015-02-19 04:48:36

标签: python multiprocessing

我正在学习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进程正在运行。

enter image description here

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

enter image description here

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

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

1 个答案:

答案 0 :(得分:2)

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

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

top -b | grep python

来自man top

  

-b:批处理模式操作           在批量模式'中开始,这可能对发送 -           从顶部放到其他程序或文件。在这种模式下,顶部           不会接受输入并运行,直到迭代限制你           设置为' -n'命令行选项或直到被杀死。