Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python.announce > #3622

Release 0.3.4 of orderedstructs including a C++/Python SkipList

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From Paul Ross <apaulross@gmail.com>
Newsgroups comp.lang.python.announce
Subject Release 0.3.4 of orderedstructs including a C++/Python SkipList
Date Thu, 29 Apr 2021 10:44:50 +0100
Lines 37
Approved python-announce-list@python.org
Message-ID <161969050737.22749.python-announce-list@python.org> (permalink)
Reply-To python-list@python.org
Mime-Version 1.0
Content-Type text/plain; charset="UTF-8"
Content-Transfer-Encoding base64
X-Trace news.uni-berlin.de A9kz+2CCLgPIqnB2ipglAAP5XgtVBluFwDplIiF53tdg==
Authentication-Results mail.python.org; dkim=pass reason="2048-bit key; unprotected key" header.d=gmail.com header.i=@gmail.com header.b=BoKiAdUP; dkim-adsp=pass; dkim-atps=neutral
X-Spam-Status OK 0.001
X-Spam-Evidence '*H*': 1.00; '*S*': 0.00; 'url-ip:140.82/16': 0.03; 'random': 0.05; 'restrictions': 0.05; 'tests': 0.05; 'thread': 0.05; 'python.': 0.07; 'comparison': 0.09; 'computing': 0.09; 'concurrent': 0.09; 'memory.': 0.09; 'to:addr:python-announce- list': 0.09; 'url-ip:151.101.0.223/32': 0.09; 'url- ip:151.101.128.223/32': 0.09; 'url-ip:151.101.192.223/32': 0.09; 'url-ip:151.101.64.223/32': 0.09; 'subject:Python': 0.12; 'url- ip:140/8': 0.12; 'url:github': 0.13; 'arrays.': 0.16; 'c++': 0.16; 'capacity': 0.16; 'compiled': 0.16; 'dataset.': 0.16; 'functions.': 0.16; 'linearly': 0.16; 'look-up': 0.16; 'received :mail-wr1-x42e.google.com': 0.16; 'sorted': 0.16; 'subject:skip:o 10': 0.16; 'url:latest': 0.16; 'url:project': 0.16; 'url:pypi': 0.16; 'python': 0.16; 'module': 0.28; 'there': 0.31; 'but': 0.31; 'structure': 0.32; 'message-id:@mail.gmail.com': 0.33; 'received:google.com': 0.34; 'contains': 0.35; 'url-ip:104.17/16': 0.35; 'from:addr:gmail.com': 0.35; 'url-ip:151.101.36.223/32': 0.38; 'url-ip:151.101.36/24': 0.38; 'list': 0.39; 'example': 0.40; 'package': 0.40; 'skip:e 10': 0.60; 'skip:o 10': 0.62; 'url- ip:151.101.0/24': 0.63; 'url-ip:151.101.128/24': 0.63; 'url- ip:151.101.192/24': 0.63; 'url-ip:151.101.64/24': 0.63; 'internal': 0.63; 'skip:m 20': 0.64; 'url:index': 0.64; 'cost': 0.64; 'speed': 0.69; 'implemented': 0.69; 'latter': 0.69; 'performance': 0.74; 'operations': 0.74; 'released': 0.75; 'features': 0.76; 'near': 0.77; 'paul': 0.81; 'novel': 0.84; 'typically,': 0.84; 'include:': 0.91
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=qXt0QuLIVMDDgsxDLSRDlLkMR/oJuxjbFhPG+PAsy+I=; b=BoKiAdUPr47AbBfPxnQ/8Y9rKDt01aiKWwr7fGgrTdVcoOYUTEhJeFErG6SI5AGWYB XyYTakGnRQdpI7kIZP6lLMy3DEgtnzV9eBI9TA25z6/mDOQEVvvh1bapLk4hy74X6RVo 1CK8rw+jwdurrGlpmt+/hyMEmb/47A3zoLqC2rMVQZM7sZZcBze9L6meCWzu+nvMNmff uuTkIQ3htvZoplVN3BJ+cjm+EGhRg2D4TyT22wcD36KhFGJkB6UJ1LB9hXpIzwz6HgkS tYAhngoig1xxiRgJwzavcHhHAtKAftLLKdehPuPA7qPQgNDSJITruBff8H1/WlxCdvJ6 bZiA==
X-Google-DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=qXt0QuLIVMDDgsxDLSRDlLkMR/oJuxjbFhPG+PAsy+I=; b=nKUzhwa/sFNi8nVny2IYBa7FtIjBbrWKL90N9RKpi2gAQlkFL2uWLBhvNxyTVEN4cO 9MfPqgz+SfCFbQKFn3+OjSIdiHVYCtvizCYWFpiSWzCUyAQLcntxxwD82q8E1lQ0kT6Z +EgJqI/bZlhN2P65Nx0oFC+Sg2L0NrqmGqqDWK4VyBRW7DHJzESpVdq5Ea8dQMOjXeUU AjWt0M3kHpt/Er7H4StA4izjaSu1RVcC/tZnfAxLgSU4Y2SsxxEewEwAIRGbK0Qgd2ot a7G0SvEfKM+RLPyVnb9gon9o4XpV12ovJ4pSqj3zs38d+3lk/j83Pq3cHWKvwl8bq7Lo tksQ==
X-Gm-Message-State AOAM532VhY2RO09nM+28BOtfTBDr4CKdcwWlwBA7RmSJ562kLgyh09xD E3drllj+GNMraSLYJO8H+5XqjbxcV9claHKCO1m+a5uE
X-Google-Smtp-Source ABdhPJxC6fTm3YigrqDudVeg4ImNuHRnp0kL86R4QxrcbokYzr2PdciHdmx1NQW3rrvBOqq6N8URNjDYN/iThvWp6jU=
X-Received by 2002:a5d:4d0a:: with SMTP id z10mr13759214wrt.334.1619689501605; Thu, 29 Apr 2021 02:45:01 -0700 (PDT)
X-MailFrom apaulross@gmail.com
X-Mailman-Rule-Hits emergency
X-Mailman-Rule-Misses dmarc-mitigation; no-senders; approved
Message-ID-Hash TPXQA3S3OVDLRA7GRFVYEQ5U7DCF4JLK
X-Message-ID-Hash TPXQA3S3OVDLRA7GRFVYEQ5U7DCF4JLK
X-Mailman-Approved-At Thu, 29 Apr 2021 06:01:32 -0400
X-Content-Filtered-By Mailman/MimeDel 3.3.5b1
X-Mailman-Version 3.3.5b1
Precedence list
List-Id Announcement-only list for the Python programming language <python-announce-list.python.org>
Archived-At <https://mail.python.org/archives/list/python-announce-list@python.org/message/TPXQA3S3OVDLRA7GRFVYEQ5U7DCF4JLK/>
List-Archive <https://mail.python.org/archives/list/python-announce-list@python.org/>
List-Help <mailto:python-announce-list-request@python.org?subject=help>
List-Owner <mailto:python-announce-list-owner@python.org>
List-Post <mailto:python-announce-list@python.org>
List-Subscribe <mailto:python-announce-list-join@python.org>
List-Unsubscribe <mailto:python-announce-list-leave@python.org>
Xref csiph.com comp.lang.python.announce:3622

Show key headers only | View raw


I have released v0.3.4 of the orderedstructs package that contains a high
performance SkipList implemented in C++ with Python bindings. A SkipList
behaves as an always sorted list with, typically, O(log(n)) cost for
insertion, look-up and removal. This makes it ideal for such operations as
computing the rolling median of a large dataset.

The characteristics of this SkipList implementation include:

   - No capacity restrictions apart from available memory.
   - Works with any C++ type <T> that has meaningful comparison operators.
   - The C++ SkipList can be compiled as thread safe.
   - The Python SkipList is thread safe.
   - Python SkipLists can be long/float/bytes/object types, the latter can
   have user defined comparison functions.
   - With Python 3.8+ SkipLists can be combined with the
   multiprocessing.shared_memory
   <https://docs.python.org/3/library/multiprocessing.shared_memory.html#module-multiprocessing.shared_memory>
   module for concurrent operation on large arrays. For example concurrent
   roling medians
   <https://skiplist.readthedocs.io/en/latest/rolling_median.html#rolling-median-in-python-with-multiprocessing-shared-memory>
   which speed up near linearly with the number of cores.
   - The implementation is extensively performance tested in C++ and Python.

There are a some novel features to this implementation:

   - A SkipList is a probabilistic data structure but we have deterministic
   tests that work for any (sane) random number generator. See testing a
   probabalistic data structure
   <http://skiplist.readthedocs.io/en/latest/test_notes.html#testing-a-probabilistic-structure>
   - This SkipList can dynamically generate visualisations of its current
   internal state. See visualising a skiplist
   <http://skiplist.readthedocs.io/en/latest/visualisations.html#skiplist-visualisation-label>

Project source: https://github.com/paulross/skiplist
PyPi: https://pypi.org/project/orderedstructs/
Documentation: http://skiplist.readthedocs.io/en/latest/index.html

Paul Ross.

Back to comp.lang.python.announce | Previous | Next | Find similar | Unroll thread


Thread

Release 0.3.4 of orderedstructs including a C++/Python SkipList Paul Ross <apaulross@gmail.com> - 2021-04-29 10:44 +0100

csiph-web