aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/experiments/test_asyncpg.py21
-rw-r--r--python/experiments/test_matrix.py60
-rw-r--r--python/experiments/test_timestamptz.py22
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')