为了账号安全,请及时绑定邮箱和手机立即绑定

Python 多核 CSV 短程序,需要建议/帮助

Python 多核 CSV 短程序,需要建议/帮助

慕婉清6462132 2021-06-30 09:01:28
我是一个爱好编码员,从 AHK 开始,然后是一些 Java,现在我尝试学习 Python。我已经搜索并找到了一些提示,但我还没有能够将它实现到我自己的代码中。 希望这里有人可以帮助我,这是一个非常短的程序。我正在使用带有“;”的 .txt csv 数据库 作为分隔符。数据库示例:哪种颜色通常是猫?;黑色地球上最长的人有多高?;272 厘米地球是圆的吗?;是的数据库现在由 20.000 行组成,这使程序“变慢”,仅使用 25% 的 CPU(1 个核心)。如果我可以让它使用所有 4 个内核(100%),我想它会更快地执行任务。任务基本上是将剪贴板与数据库进行比较,如果匹配,它应该给我一个答案作为回报。也许我也可以将数据库分成 4 个部分?现在的代码看起来像这样!不超过65行,它在做它的工作(但要慢)。关于如何将这个过程变成需要的多核的建议。import time    import pyperclip as pp    import pandas as pd    import pymsgbox as pmb    from fuzzywuzzy import fuzz    import numpy    ratio_threshold = 90    fall_back_time = 1    db_file_path = 'database.txt'    db_separator = ';'    db_encoding = 'latin-1'    def load_db():        while True:            try:                # Read and create database                db = pd.read_csv(db_file_path, sep=db_separator, encoding=db_encoding)                db = db.drop_duplicates()                return db            except:                print("Error in load_db(). Will sleep for %i seconds..." % fall_back_time)        time.sleep(fall_back_time)    def top_answers(db, question):        db['ratio'] = db['question'].apply(lambda q: fuzz.ratio(q, question))        db_sorted = db.sort_values(by='ratio', ascending=False)        db_sorted = db_sorted[db_sorted['ratio'] >= ratio_threshold]        return db_sorted    def write_txt(top):        result = top.apply(lambda row: "%s" % (row['answer']), axis=1).tolist()        result = '\n'.join(result)        fileHandle = open("svar.txt", "w")        fileHandle.write(result)        fileHandle.close()        pp.copy("")    def main():        try:            db = load_db()            last_db_reload = time.time()            while True:                # Get contents of clipboard                question = pp.paste()                # Rank answer                top = top_answers(db, question)                # If answer was found, show results                if len(top) > 0:                    write_txt(top)                time.sleep(fall_back_time) 
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信