执行慢速功能的最佳方法是什么?

时间:2014-09-10 09:47:13

标签: python multithreading scalability

我有一个python函数,大约需要1分钟才能执行。我需要为我的数据库中的每个用户运行它。在最短时间内执行的最佳方法是什么? (假设我不能减少fn执行时间)。我应该为每个用户分配多个线程吗? (我无法控制用户数。)

1 个答案:

答案 0 :(得分:2)

假设你的慢功能很慢,因为它是CPU密集型的,为每个用户生成一个线程可能是一个危险,如果你有一个大型数据库,你可能会有数千个线程竞争资源。您可以使用multiprocessing.Pool来拥有一个工作池:

from multiprocessing import Pool

def f(user):
    # do something

users = ['Alice', 'Bob', 'Carol', 'Dave']
pool = Pool(processes=10)
results = pool.map(f, users)

即使users被证明是一千个名字的列表,您最多也会同时运行10个进程。您应该根据机器的核心数设置进程数。