我希望您能够用concurrent futures学习多线程/多进程。我尝试使用了以下代码,虽然我知道磁盘IO问题不可避免,但我想最大限度地利用我的RAM和CPU。什么方法是处理大规模数据最常用/最佳的方法?如何使用concurrent futures来处理大型数据集?是否有比下面这些更优先的方法?
方法1:
for folders in os.path.isdir(path):
p = multiprocessing.Process(pool.apply_async(process_largeFiles(folders)))
jobs.append(p)
p.start()
方法二:
with concurrent.futures.ThreadPoolExecutor(max_workers=100) as executor:
for folders in os.path.isdir(path):
executor.submit(process_largeFiles(folders), 100)
方法三:
with concurrent.futures.ProcessPoolExecutor(max_workers=10) as executor:
for folders in os.path.isdir(path):
executor.submit(process_largeFiles(folders), 10)
我应该尝试同时使用进程池和线程池吗?
方法(思路):
with concurrent.futures.ProcessPoolExecutor(max_workers=10) as process:
with concurrent.futures.ThreadPoolExecutor(max_workers=100) as thread:
for folders in os.path.isdir(path):
process.submit(thread.submit(process_largeFiles(folders), 100),10)
如何在最广泛的使用情况下最大化我的RAM和CPU利用率?
我知道启动进程需要一些时间,但是如果处理的文件很大,这是否会被抵消?