Python Cassandra Driver tiene el mismo rendimiento de inserción que la copia

Estoy tratando de usar Python async con Cassandra para ver si puedo escribir registros en Cassandra más rápido que el comando CQL COPY.

Mi código de Python se ve así:

from cassandra.cluster import Cluster
from cassandra import ConsistencyLevel
from cassandra.query import SimpleStatement
cluster = Cluster(['1.2.1.4'])

session = cluster.connect('test')

with open('dataImport.txt') as f:
    for line in f:
        query = SimpleStatement (
            "INSERT INTO tstTable (id, accts, info) VALUES (%s) " %(line),
            consistency_level=ConsistencyLevel.ONE)
        session.execute_async (query)

pero me está dando el mismo rendimiento que el comando COPIAR ... alrededor de 2.700 filas / segundo ... ¿debería ser más rápido con asíncrono?

¿Necesito usar multihilo en python? Solo estoy leyendo al respecto, pero no estoy seguro de cómo encaja en esto ...

EDITAR:

así que encontré algo en línea que estoy tratando de modificar, pero no puedo trabajar bastante ... Tengo esto hasta ahora ... también dividí el archivo en 3 archivos en / Data / toImport / dir:

import multiprocessing
import time
import os
from cassandra.cluster import Cluster
from cassandra import ConsistencyLevel
from cassandra.query import SimpleStatement


cluster = Cluster(['1.2.1.4'])

session = cluster.connect('test')

def mp_worker(inputArg):
        with open(inputArg[0]) as f:
            for line in f:
                query = SimpleStatement (
                    "INSERT INTO CustInfo (cust_id, accts, offers) values (%s)" %(line),
                    consistency_level=ConsistencyLevel.ONE)
                session.execute_async (query)


def mp_handler(inputData, nThreads = 8):
    p = multiprocessing.Pool(nThreads)
    p.map(mp_worker, inputData, chunksize=1)
    p.close()
    p.join()

if __name__ == '__main__':
    temp_in_data = file_list
    start = time.time()
    in_dir = '/Data/toImport/'
    N_Proc = 8
    file_data = [(in_dir) for i in temp_in_data]

    print '----------------------------------Start Working!!!!-----------------------------'
    print 'Number of Processes using: %d' %N_Proc
    mp_handler(file_data, N_Proc)
    end = time.time()
    time_elapsed = end - start
    print '----------------------------------All Done!!!!-----------------------------'
    print "Time elapsed: {} seconds".format(time_elapsed)

pero obtén este error:

Traceback (most recent call last):
  File "multiCass.py", line 27, in <module>
    temp_in_data = file_list
NameError: name 'file_list' is not defined

Respuestas a la pregunta(2)

Su respuesta a la pregunta