【发布时间】:2014-09-11 16:14:56
【问题描述】:
我正在研究由 32 亿个字符组成的人类基因组,并且我有一个需要在此数据中搜索的对象列表。像这样的:
result_final=[]
objects=['obj1','obj2','obj3',...]
def function(obj):
result_1=search_in_genome(obj)
return(result_1)
for item in objects:
result_2=function(item)
result_final.append(result_2)
在数据中搜索每个对象需要近 30 秒,而我有几千个对象。我注意到,在串行执行此操作时,仅使用了 7% 的 CPU 和 5% 的 RAM。正如我搜索的那样,为了减少计算时间,我应该使用队列、线程或多处理进行并行计算。但对于非专家来说,它们似乎很复杂。任何人都可以帮助我如何为 python 编写代码以同时运行 10 个搜索,是否可以让 python 使用最大可用 CPU 和 RAM 进行多处理? (我在具有 64Gb RAM、COREI7 和 3.5 GH CPU 的 Windows 7 上使用 Python33)
【问题讨论】:
-
使用
concurrent.futures,特别是concurrent.futures.as_completed,如果您使用的是 Python 2.7,那么 PyPi 中有一个实现。
标签: python multithreading python-3.x queue multiprocessing