2017-04-06 113 views
0
import multiprocessing 
import requests 

def work(number): 
    link = 'http://APILink/' 
    response = requests.get(link).text 
    print response 

if __name__ == "__main__": 
    number_processes = 2 
    pool = multiprocessing.Pool(number_processes) 
    results = pool.map_async(work, range(1,3)) 
    pool.close() 
    pool.join() 

我在上面的代码运行使用2进程异步运行多处理。但是当我运行代码时,它的连续运行却并不平行。如何同时运行这两个进程。python多进程异步运行进程一个接一个

+0

你怎么知道它连续运行?我试过你的代码 - 它在我的系统上并行运行。 –

+0

当我点击api链接时,我花了4秒,而当我用两个进程运行脚本时,花了我大约10秒,本身告诉它一个接一个地运行。 –

+0

这可能不是最可靠的方法检测串行与并行。我建议在worker的开始/结尾处添加一些'print'begin/end worker%d“%number'语句。 –

回答

-1

您需要的工人池,检查出:从文档 The docs: using a pool of workers

退房:

from multiprocessing import Pool 
p = Pool(5) 
def f(x): 
    return x*x 

p.map(f, [1,2,3]) 

,你需要你的函数的员工名单中映射。

请注意背景中的恶魔进程。

+0

这几乎就是线程启动器所具有的功能,除了线程启动器使用map_async - 映射的变体作为文档状态。 –