在python中实施多线程以读取文件中的行,并检查该行是否与给定的字符串匹配[closed]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中实施多线程以读取文件中的行,并检查该行是否与给定的字符串匹配[closed]相关的知识,希望对你有一定的参考价值。
我正在尝试在python3中实现多线程以读取特定文件中的行,并检查该行是否与给定的字符串匹配。这使我有些困惑。请对此提供帮助,并让我知道是否在这里使用了多处理而非多处理
还有一件事。我正在尝试在基于Linux的系统上实现此功能
import threading
from subprocess import check_output
def thread_task(line):
try:
if line=="hello123":
print("Found")
init_.close()
exit()
except:
#print("Somethings gotta")
pass
def check_point(lock,file1):
lock.acquire()
print(file1)
with open(file1,"r",encoding="utf-8",errors = "ignore") as data:
for line in data:
line = line[:-1]
thread_task(line)
lock.release()
def main_task(wordlist):
lock = threading.Lock()
# creating threads
t = list(range(0,len(div)))
for i in t:
t[i] = threading.Thread(target=check_point, args=(lock,div[i],))
# start threads
for i in range(0,len(div)):
t[i].start()
# wait until threads finish their job
for i in range(0,len(div)):
t[i].join()
if __name__ == "__main__":
wordlist = input("Enter the File location : ")
div = check_output(['split','-l','100000',wordlist,"Temp/"])
div = check_output(["ls",'Temp/']).decode("utf").split("
")
div = div[:-1]
main_task(div)
print("String Not found")
答案
在大多数操作系统中,瓶颈是磁盘访问。因此,将您的大文件拆分为许多小文件以同时读取它们只是浪费时间。
[请在您的python脚本中一次读取一行文件,检查是否包含该词。多重处理对您无济于事。
以上是关于在python中实施多线程以读取文件中的行,并检查该行是否与给定的字符串匹配[closed]的主要内容,如果未能解决你的问题,请参考以下文章