在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]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Bash 读取文件中的行并避免使用 # 行

在python中实现对文件的写入,读取,复制,批量重命名

NSFetchRequest 不读取更新的行 [关闭]

如何使用 C++ 中的流从文件末尾读取给定数量的行?

从线程中删除重复的行

python 在没有换行符的情况下读取文件中的行