我有一个功能:
1) 将 hdf5 数据集作为整数 ascii 码读入
2) 将 ascii 整数转换为字符...chr() 函数
3) 将字符连接成单个字符串函数
在进行分析时,我发现绝大多数计算都花在了第 2 步上,即将 ascii 整数转换为字符。我通过使用以下方法对这个调用进行了一些优化:
''.join([chr(x) for x in file[dataSetName].value])
由于我的解析函数似乎受 cpu 限制(整数到字符的转换)而不是 i/o 限制,我希望通过专用于解析的内核数量获得或多/少的线性速度增强。连续解析一个文件需要约 15 秒...解析 10 个文件(在我的 12 核机器上)需要约 150 秒,同时使用 10 个线程。也就是说,似乎根本没有增强。
我使用以下代码来启动我的线程:
threads=[]
timer=[]
threadNumber=10
for i,d in enumerate(sortedDirSet):
timer.append(time.time())
# self.loadFile(d,i)
threads.append(Thread(target=self.loadFileargs=(d,i)))
threads[-1].start()
if(i%threadNumber==0):
for i2,t in enumerate(threads):
t.join()
print(time.time()-timer[i2])
timer=[]
threads=[]
for t in threads:
t.join()
任何帮助将不胜感激。