diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/experiments/test_asyncpg.py | 21 | ||||
| -rw-r--r-- | python/experiments/test_matrix.py | 60 | ||||
| -rw-r--r-- | python/experiments/test_timestamptz.py | 22 |
3 files changed, 103 insertions, 0 deletions
diff --git a/python/experiments/test_asyncpg.py b/python/experiments/test_asyncpg.py new file mode 100644 index 00000000..315c82c8 --- /dev/null +++ b/python/experiments/test_asyncpg.py @@ -0,0 +1,21 @@ +import asyncio +import asyncpg +import datetime + +async def dbconn(): + conn = await asyncpg.connect(user='serenitas_user', password='Serenitas1', + database='serenitasdb', host='debian') + return conn + +async def get_singlenames_quotes_async(indexname, date): + con = await dbconn() + stmt = await con.prepare('SELECT * FROM curve_quotes($1, $2)') + async with con.transaction(): + # Postgres requires non-scrollable cursors to be created + # and used in a transaction. + async for record in stmt.cursor(indexname, date): + print(record) + await con.close() + +loop = asyncio.get_event_loop() +loop.run_until_complete(get_singlenames_quotes_async("ig27", datetime.date.today())) diff --git a/python/experiments/test_matrix.py b/python/experiments/test_matrix.py new file mode 100644 index 00000000..ae7e9d0b --- /dev/null +++ b/python/experiments/test_matrix.py @@ -0,0 +1,60 @@ +import numpy as np +import scipy.linalg as splinalg +import dask.array as da +import timeit +import os +import ctypes +from ctypes.util import find_library +openblas_lib = ctypes.cdll.LoadLibrary(find_library('openblas')) + +def get_num_threads(): + return openblas_lib.openblas_get_num_threads() + +def set_num_threads(n): + openblas_lib.openblas_set_num_threads(int(n)) + +seed = 1234 +np.random.seed(seed) + +N = 1000000 +p = 100 +X = np.random.random(N * p).reshape((N, p), order='F') +XT = X.T.copy() +true_value=33334547.40257686 +#X = da.from_array(X, chunks=(N/4, p)) +old_num_threads = get_num_threads() +def test(): + if not np.isclose(np.trace(X.T.dot(X)), true_value): + raise ValueError() + +def test2(): + if not np.isclose(np.trace(splinalg.blas.dsyrk(1., X, trans=1)), true_value): + raise ValueError() + +def test3(): + if not np.isclose(np.trace(XT.dot(X)), true_value): + raise ValueError() + +t = timeit.timeit(test, number=5) +print("Multi threaded computation with {} threads: {}".format(old_num_threads, t)) + +t = timeit.timeit(test2, number=5) +print("Multi threaded computation dsyrk with {} threads: {}".format(old_num_threads, t)) + +t = timeit.timeit(test3, number=5) +print("Multi threaded computation dgemv with {} threads: {}".format(old_num_threads, t)) + +set_num_threads(1) +t = timeit.timeit(test, number=5) +print("Non multi-threaded computation:{}".format(t)) +#set_num_threads(old_num_threads) + +print("using dask array") +for Nchunk in [1, 2, 4]: + X = da.from_array(X, chunks=(N / Nchunk, p)) + def test_dask(): + if not np.isclose(np.trace(X.T.dot(X).compute()), true_value, Nchunk): + raise ValueError() + t = timeit.timeit(test_dask, number=5) + print("Dask computation {} chunk: {}".format(Nchunk, t)) + diff --git a/python/experiments/test_timestamptz.py b/python/experiments/test_timestamptz.py new file mode 100644 index 00000000..eae44af3 --- /dev/null +++ b/python/experiments/test_timestamptz.py @@ -0,0 +1,22 @@ +import pandas as pd +from db import dbengine +engine = dbengine('serenitasdb') + +df1 = pd.read_sql_query("SELECT date FROM test", engine) + +df2 = pd.read_sql_query("SELECT date FROM test WHERE date<='2014-10-17'", + engine) +df2bis = pd.read_sql_query("SELECT date FROM test WHERE date<='2014-10-17'", + engine, parse_dates=['date']) +df3 = pd.read_sql_query("SELECT date FROM test", engine, + parse_dates=['date']) + + +# df4 = pd.read_sql_query("SELECT date FROM index_quotes " \ +# "WHERE date BETWEEN '2016-10-01' AND '2016-11-30'", engine, +# index_col='date') + + +# CREATE TABLE test(date timestamptz); + +# INSERT INTO test VALUES('2014-10-16 07:50:49-04'),('2014-11-06 07:42:06-05') |
