我试图查看使用 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)