Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用一个简单的示例理解python多处理_Python_Multiprocessing - Fatal编程技术网

使用一个简单的示例理解python多处理

使用一个简单的示例理解python多处理,python,multiprocessing,Python,Multiprocessing,我是多处理机新手。 我写了一个简单的代码,每次取一个数字并打印出来 import multiprocessing as mp def test(num): print num L = [1,2,3,4,5,6,7,8] pool = mp.Pool(2) pool.map(test,L) 这也可以使用常规方法来完成[测试(i)中的i] 但我想使用多处理,并做到这一点。 但是当我运行程序时,内核显示忙碌,但没有打印 我的代码有问题吗?当我在终端(Python2.7.6)中运行您的

我是多处理机新手。 我写了一个简单的代码,每次取一个数字并打印出来

import multiprocessing as mp

def test(num):
    print num

L = [1,2,3,4,5,6,7,8]


pool = mp.Pool(2)
pool.map(test,L)
这也可以使用常规方法来完成
[测试(i)中的i]

但我想使用多处理,并做到这一点。 但是当我运行程序时,内核显示忙碌,但没有打印


我的代码有问题吗?

当我在终端(Python2.7.6)中运行您的代码并打印时

1
3
2
4
5
6
7
8
[None, None, None, None, None, None, None, None]

您正在使用windows吗?@IljaEveriläyes由于多进程试图生成新进程,这些进程试图从您的模块导入测试函数,这会导致生成一组新进程,并。。。您需要使用
来保护实际的“main”代码,如果uuuu name\uuuuu==“\uuuuuuu main\uuuuu”:…
,以防止出现这种情况。在支持分叉的系统(如linux)上,这种情况不会发生,因为它们只是当场分叉并调用该函数。@IljaEveriläi没有明白吗?您的意思是
导入测试
,但我在哪里保存test.py?将除函数测试之外的所有内容移动到if语句中,以确保在某人或某物尝试导入函数测试时,保护代码不会运行。多处理在windows上的工作方式是,它生成全新的进程,这些进程导入您的函数以完成工作。只有当您的模块是主模块时,if块中的代码才应运行。投票被否决,因为指向文档的链接与“it works for me”组合在一起是一个糟糕的答案。@IljaEverilä是的,它在windows中不起作用