Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python.announce > #3622
| 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
Release 0.3.4 of orderedstructs including a C++/Python SkipList Paul Ross <apaulross@gmail.com> - 2021-04-29 10:44 +0100
csiph-web