谢谢你所有的教学答案和使用python库;o)
发布于 2011-07-11 15:36:28
根据我的经验,多线程可能不会是一个可行的选择,以加快速度(由于全局解释器锁)。
multiprocessing模块是一个很好的替代方案。这可能成功,也可能不起作用,这取决于您最终需要将多少数据从一个进程传递到另一个进程。
另一个很好的选择是考虑在计算中使用numpy (如果您还没有)。如果您可以将代码向量化,那么即使在单个核心上,您也应该能够实现显着的加速。根据您的具体操作和numpy的构建,它甚至可以透明地将计算分布在多个核之间。
这里的编辑是一个使用multiprocessing模块执行简单计算的完整示例。它使用四个过程来计算数字从零到九的平方。
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
pool = Pool(processes=4) # start 4 worker processes
inputs = range(10)
result = pool.map(f, inputs)
print result这是一个简单的例子。考虑到f()的琐碎性质,这个并行版本几乎肯定比串行计算相同的东西要慢。
发布于 2011-07-11 15:11:49
在CPython中进行多核处理有点困难(多亏了吉尔 )。但是,它们是多处理模块,它允许使用子进程(而不是线程)来分割您在多个核上的工作。
只要您的代码真的可以被分割成多个部分,并且不依赖于共享对象,这个模块就可以直接使用。链接的文件应该是一个良好的起点。
https://stackoverflow.com/questions/6652124
复制相似问题