Skip to content

Instantly share code, notes, and snippets.

@coleifer
Created July 14, 2014 21:41
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save coleifer/ec7535128b550b96beda to your computer and use it in GitHub Desktop.
Save coleifer/ec7535128b550b96beda to your computer and use it in GitHub Desktop.
import multiprocessing
import optparse
import sys
import time
from peewee import *
def get_db_model():
db = SqliteDatabase('pwsqlite.db', timeout=10)
class DummyModel(Model):
data = IntegerField()
class Meta:
database = db
return db, DummyModel
def insert_rows(args):
rows, = args
db, DummyModel = get_db_model()
db.connect()
start = time.time()
for i in range(rows):
DummyModel.create(data=i)
duration = time.time() - start
db.close()
return duration
def main(processes, rows):
db, DummyModel = get_db_model()
db.connect()
with db.transaction():
DummyModel.drop_table(True)
DummyModel.create_table()
db.close()
pool = multiprocessing.Pool(processes=processes)
args = [[rows] for i in range(processes)]
times = pool.map(insert_rows, args)
pool.close()
print 'Processes:', processes
print 'Rows:', rows
print 'Slowest:', max(times)
print 'Fastest:', min(times)
print 'Average:', sum(times) / len(times)
print 'Total time:', sum(times)
if __name__ == '__main__':
parser = optparse.OptionParser(usage='%prog [options]')
parser.add_option('-p', '--processes', dest='processes', default=4,
help='Number of processes.', type=int)
parser.add_option('-n', '--rows', dest='rows', default=10,
help='Number of rows.', type=int)
options, args = parser.parse_args()
main(options.processes, options.rows)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment