2013-12-15 36 views
1

我使用多处理在Python并行运行我的代码,如下所示,Python的多处理

result1 = pool.apply_async(set1, (Q, n)) 
result2 = pool.apply_async(set2, (Q, n)) 

SET1和SET2是两个独立的功能,这个代码是在while循环。

然后我试运行时间,如果我按顺序运行我的代码,在特定参数,它是10秒,但是,当我在并行运行,只用了约0.2秒。我用time.clock()来记录时间。为什么运行时间减少了很多,对于并行编程的直觉思维,不应该平行的时间在5秒到10秒之间?我不知道如何在我的报告中分析这个...任何人都可以提供帮助吗?由于

+0

你最终调用'result1.get()'吗?你是否检查过两种变体(顺序/并行)产生相同的结果?你可以使用'timeit.default_timer()'而不是'time.clock()'。或者从命令行调用它:'your_module import setup'中的'python -mtimeit -s',运行; setup();“ “run()的”' – jfs

回答

1

为了得到一个明确的答案,你需要显示所有的代码,并说你使用的操作系统。

我的猜测:您在Linux-y系统上运行,因此time.clock()返回CPU时间(不是挂钟时间)。然后你用新的,独特的过程来运行所有的实际工作。这些CPU消耗的CPU时间根本不显示在主程序的time.clock()结果中。尝试使用time.time()来代替快速完整性检查。