q.insert(None, False, False, *records[key]) # create TransactionWorkers transaction_workers = [] for i in range(num_threads): transaction_workers.append(TransactionWorker([])) # generates 10k random transactions # each transaction will increment the first column of a record 5 times for i in range(1000): k = randint(0, 2000 - 1) transaction = Transaction() for j in range(5): key = keys[k * 5 + j] q = Query(grades_table) transaction.add_query(q.select, key, 0, [1, 1, 1, 1, 1]) q = Query(grades_table) transaction.add_query(q.increment, key, 1) transaction_workers[i % num_threads].add_transaction(transaction) threads = [] for transaction_worker in transaction_workers: threads.append(threading.Thread(target=transaction_worker.run, args=())) for i, thread in enumerate(threads): print('Thread', i, 'started') thread.start() for i, thread in enumerate(threads): thread.join() print('Thread', i, 'finished')
# Create transactions and assign them to workers transactions = [] transaction_workers = [] for i in range(num_threads): transaction_workers.append(TransactionWorker()) for i in range(100): key = choice(keys) record = records[key] c = record[1] transaction = Transaction() for i in range(5): c += 1 q = Query(grades_table) transaction.add_query(q.select, key, 0, [1, 1, 1, 1, 1]) q = Query(grades_table) transaction.add_query(q.update, key, *[None, c, None, None, None]) transaction_workers[i % num_threads].add_transaction(transaction) print("Transactions built") threads = [] for transaction_worker in transaction_workers: threads.append(threading.Thread(target=transaction_worker.run, args=())) print("Threads created") for thread in threads: thread.start() for thread in threads: thread.join()