我正试图找到一个巨大输入的单词模式.我正在为此目的使用字典,几个小时后程序崩溃了MemoryError
.
我修改了程序.我通过MySQLdb创建了一个数据库,并在那里插入了值的pattern-index
.因此,对于每个单词,我检查它是否在索引中,如果不是,我用值将其写入索引.问题是数据库方法太慢了.
我想知道是否有任何方法可以组合字典和数据库,例如:
if ram <90% usage:
seek into dict
append to dict
else:
if not (seek into dict):
seek into database
append to database
Run Code Online (Sandbox Code Playgroud)
使用字典用于输入100kb数据的相同目的需要约1.5秒
使用数据库进行相同的输入需要大约84秒
原始输入为16 GB.我不知道要处理多少钱.
我已经设置了一个sqlite3数据库.我填写了一些数据(约400万条记录~1.2Gb的数据).然后我做一些查询(选择/删除/更新).问题是有时在插入后脚本会停止而不会出错.有时它会一直运行到最后.这些是我运行的查询类型:
from __future__ import print_function
import sqlite3
import csv
import os
import glob
import sys
import time
db = 'test.db'
conn = sqlite3.connect(db)
conn.text_factory = str # allows utf-8 data to be stored
c = conn.cursor()
i = 0
### traverse the directory and process each .csv file
##print("debug")
csvfile =('/home/Desktop/Untitled Folder/Crimes_-_2001_to_present.csv')
with open(csvfile, "rb") as f:
reader = csv.reader(f)
t = time.time()
header = True
for row in reader:
if header:
# gather column names from the first row …
Run Code Online (Sandbox Code Playgroud) 我想将所有文件从 2 个目录复制到另一个目录,但是当文件具有相同的名称时,它们会在目标目录中复制一次(通过一个目录。不是两个)。
这是代码:
def cp_files_tmp(src, dest):#copy dir's files into a dir
src_files = os.listdir(src)
for file_name in src_files:
full_file_name = os.path.join(src, file_name)
if (os.path.isfile(full_file_name)):
shutil.copy(full_file_name, dest)
dest = 'C:/temp/'
src_A= 'C:/sil/in/'
src_B= 'C:/olw/in/'
cp_files_tmp(src_A, dest) # cp files
cp_files_tmp(src_B, dest) # cp files
Run Code Online (Sandbox Code Playgroud) 我有一个数字字符串列表,如下所示:
MyList = ['1','2','3 4 5 6 7','33333']
Run Code Online (Sandbox Code Playgroud)
我想检查列表中的每个单元格它获得的对象数量.我为每个单元格使用了len(),但是它返回了我想要的字符串长度.我想要例如获得:
MyList[0] ~> 1
MyList[1] ~> 1
MyList[2] ~> 5
MyList[3] ~> 1
Run Code Online (Sandbox Code Playgroud)
我应该抛出每个元素来检查它是否返回一个数字,如果没有循环通过单元格?或者是否有一些功能可以解决问题?
谢谢.