[英]Python - Can't run multiple queries in parallel
我有一個接收多個連接的腳本(可以是 MySQL、MSSQL 等)並使用 Python 執行一些查詢。 通過使我的流程並行運行這些查詢,我取得了一些成就。 為此,我收到 dataframe 並根據列值運行這些查詢。 為此,我有以下代碼:
import pandas as pd
import multiprocessing
import util
import os
from itertools import product
df = pd.read_excel("myFile.xlsx", sheet_name = 'data')
conn, engine = #connections
def work(query):
try:
cursor.execute(query)
result = cursor.rowcount
except SyntaxError as e:
result = -999
return result
def run(df):
results = []
pool = multiprocessing.Pool(os.cpu_count())
total_rows = pool.starmap(work, product(df["queries"]), chunksize=1)
results.append(total_rows)
pool.close()
pool.join()
if __name__ == "__main__" :
run(df)
但是當我運行我的代碼時,我收到以下錯誤:
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "dev.py", line 42, in <module>
run(df)
File "dev.py", line 34, in run
total_rows = pool.starmap(work, product(df["dsc_test_query"]), chunksize=1)
File "C:\AppData\Local\Programs\Python\Python38-32\lib\multiprocessing\pool.py", line 372, in starmap
return self._map_async(func, iterable, starmapstar, chunksize).get()
File "C:\AppData\Local\Programs\Python\Python38-32\lib\multiprocessing\pool.py", line 771, in get
raise self._value
AttributeError: 'float' object has no attribute 'encode'
任何人都知道並行運行查詢列表的最佳選擇嗎?
謝謝!
線
result = cursor.rowcount
可能導致錯誤。 function 'work' 正在引發您正在觀察的屬性錯誤。 如果我用類似的東西替換工作 function
def work(url):
raise Exception("some exception")
result = -999
return result
我可以觀察到類似的行為。 很可能您正在處理需要字符串的result
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.