0

我试图查看使用 ProcessPool 和 ThreadPool 执行相同操作需要多少时间。操作是进行 1000 次 API 调用并返回一个 JSON 对象。通过 ThreadPool 执行此操作时,大约需要 68 秒。但是对于进程池,同样只需要 0.2 秒。这让我想如果我测量时间不正确。对此的任何想法都会有所帮助。我在下面粘贴我的代码供您参考:

    def geturl(url):
        
        #print("The process",os.getpid()," is working on this URL")
        response=requests.get(url)
        data=response.json()
        return data['albumId']
    
# Approach two: Using a Process Pool
    
    t3=time.time()
    
    with concurrent.futures.ProcessPoolExecutor(max_workers=10) as P:
        
        process_futures={P.submit(geturl,url):url for url in urls}
        for P_future in concurrent.futures.as_completed(process_futures):
            
            print(P_future.done())
        t4=time.time()
    print(t4-t3)

# Approach one: Using a Thread Pool
    import concurrent.futures
    t1=time.time()
    
    with concurrent.futures.ThreadPoolExecutor(max_workers=10) as thread:
        
        thread_futures={thread.submit(geturl,url):url for url in urls}
        for future in concurrent.futures.as_completed(thread_futures):
            pass
        t2=time.time()
    print(t2-t1) 
4

0 回答 0