2024-09-01
Python
00

下面代码会将List的files分为List[List[...],...]的样子,每隔1000个就是一个子列表,最后除不尽的那个子列表的元素个数 小于等于 1000。

files=[files[i:i + 1000] for i in range(0, len(files), 1000)]

多进程应用,下面的代码使用多进程执行overwrite函数,将所有jpg和png文件重写或者删除。

python
import multiprocessing import os import cv2 def listPathAllfiles(dirname): result = [] for maindir, subdir, file_name_list in os.walk(dirname): for filename in file_name_list: apath = os.path.join(maindir, filename) result.append(apath) return result def overwrite(files1): for fname in files1: try: if fname.endswith(".jpg") or fname.endswith(".png"): img = cv2.imread(fname) cv2.imwrite(fname, img) except: os.remove(fname) print(fname) if __name__ == '__main__': root = r"/ssd/xd/datasets/multilabel" files = listPathAllfiles(root) p = multiprocessing.Pool() # 创建一个包含2个进程的进程池 # split files to several parts for i in range(0, len(files), 1000): p.apply_async(func=overwrite, args=(files[i:i + 1000],)) # 往池子里加一个异步执行的子进城 p.close() # 等子进程执行完毕后关闭进程池 p.join() # 主进程等待
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!