使用一个简单的示例理解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中不起作用