我有一台 24 个核心的机器,每个核心有 2 个线程。我正在尝试优化以下代码以实现并行执行。但是,我注意到代码的性能在达到一定数量的线程后开始下降。
import argparse
import glob
import h5py
import numpy as np
import pandas as pd
import xarray as xr
from tqdm import tqdm
import time
import datetime
from multiprocessing import Pool, cpu_count, Lock
import multiprocessing
import cProfile, pstats, io
def process_parcel_file(f, bands, mask):
start_time = time.time()
test = xr.open_dataset(f)
print(f"Elapsed in process_parcel_file for reading dataset: {time.time() - start_time}")
start_time = time.time()
subset = test[bands + ['SCL']].copy()
subset = subset.where(subset != 0, np.nan)
if mask:
subset = …Run Code Online (Sandbox Code Playgroud) python parallel-processing multithreading multiprocessing python-multiprocessing
我们公司的一台服务器有32个CPU,我们有1000+个非常大的文件需要处理。我不确定同时读取 32 个文件是否是一个好主意,这样所有内核也可以同时执行独立计算。谁能简单解释一下硬盘的工作原理?如果同时读取32个文件,读取速度会不会变慢?谢谢!
我最近开始尝试将线程与 一起使用std::thread,我想知道使用线程是否有任何缺点(特别是在 C++ 中)。是否存在添加更多线程会降低性能的情况?例如,如果我要创建多个新线程,每个线程都运行一个侦听传入数据的服务器对象,那么为这些服务器实例中的每一个创建一个新线程是否不好(性能方面)?为什么/为什么不?