我正在使用pytube库来检索YouTube视频列表的流信息。我已经使用一个简单的循环以及用于多线程的concurrent.futures和多处理库实现了流的检索。然而,我并没有看到我所期望的性能提升,所有方法都需要大约130秒才能运行。
我使用的代码如下:
def _get_streams(self, yt: pytube.YouTube):
return yt.streams
@print_execution_time
def get_streams_futures(self):
with concurrent.futures.ThreadPoolExecutor() as executor:
future_results = [executor.submit(self._get_streams, yt) for yt in self._create_yt_obj()]
result = [future.result() for future in concurrent.futures.as_completed(future_results)]
return result
@print_execution_time
def get_streams_linear(self):
return [yt.streams for yt in self._create_yt_obj()]
@print_execution_time
def get_streams_multiprocessing(self):
with multiprocessing.Pool() as pool:
result = pool.map(self._get_streams, self._create_yt_obj())
return result
@print_execution_time
是一个简单的装饰器,用于计算函数的运行时间
我期望多线程方法比循环方法运行得更快,但事实并非如此。有人能解释为什么会发生这种情况,以及可以做些什么来实现所需的性能提升吗?
没有出现错误