亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號