【发布时间】:2023-03-27 04:30:02
【问题描述】:
我正在使用 python3.3,用于读取每个 20Mb 有 10 个文件的目录,我使用最多 10 个线程的线程池执行程序并提交要读取的文件。我一次读取一大块 1Mb,然后将所有文件中的每一行存储到线程安全列表中。当我查看顶部命令时,cpu 利用率非常高。 100% 高于任何降低 CPU 利用率的建议。下面是sn-p。
all_lines_list = []
while True:
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
for each_file in file_list:
executor.submit(trigger, each_file)
def trigger(filename):
with open(filename, "r")as fp:
buff = fp.read(1000000)
buff_lines = buff.split('\n')
time.sleep(0.2)
for each_line in buff_lines:
all_lines_list.append(each_line)
【问题讨论】:
-
"任何降低 CPU 利用率的建议" - 是的,产生更少的线程!
-
实际上,一个目录中也可能有超过 100 个文件,因此需要 10 个线程来进行快速处理。
-
当您的问题是关于“降低 cpu 利用率”时,为什么您的问题的标题是“增加 CPU 利用率”?
-
更改完成@selbie
-
其实我把问题说成是标题@selbie
标签: python multithreading python-3.x cpu-usage