This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

cthreading implements Python 2 Lock, RLock, and Condition in C, speeding up threads synchronization and decreasing cpu usage.

Status:

Performance

cthreading eliminates the overhead of threading.RLock and threading.Condition which are implemented in pure Python in Python 2. In particular, threading.Condition is implemented using polling. In Python 3 threading.Condition is implemented without polling; cthreading implements a similar design in C.

$ time python whispers.py -m cthreading
real    0m2.664s
user    0m2.965s
sys     0m0.808s

$ time python3 whispers.py
real    0m9.664s
user    0m8.949s
sys     0m1.812s

$ time python whispers.py
real    0m14.914s
user    0m16.986s
sys     0m12.690s

$ time python whispers.py -m pthreading
real    0m20.169s
user    0m23.062s
sys     0m17.022s

Your application is unlikely to have similar workload; do not expect this improvement.

For more info see https://github.com/nirs/cthreading/wiki/performance.

Usage

Import cthreading before any other module and monkeypatch the thread and threading modules. From this point, threading.Lock, threading.RLock, and threading.Condition are using cthreading.

import cthreading
cthreading.monkeypatch()

Note: cthreading will raise RuntimeError if the threading module was imported before cthreading.monkeypatch() is called.

Tested platforms

x86_64

  • Fedora 22 / Python 2.7.10
  • RHEL 7.2 / Python 2.7.5
  • RHEL 7.2 / Python 2.7.10+ (upstream)
  • RHEL 7.1 / Python 2.7.5
  • RHEL 6.7 / Python-2.6.6
  • Ubuntu 14.04 Server / Python 2.7.6
  • Ubuntu 12.04 Server / Python 2.7.3 (python regression tests not available)
  • Ubuntu 12.04 / Python 2.6.9 (Travis container)
  • Ubuntu 12.04 / Python 2.7.9 (Travis container)

POWER8E

  • RHEL 7.2 / Python 2.7.5
  • RHEL 7.2 / Python 2.7.10+ (upstream)

Hacking

For rpm based distributions:

yum install python-devel python-test

For deb based distributions:

apt-get install python-dev libpython2.7-testsuite

Installing Python packages:

pip install pytest pytest-timeout yappi==0.93

Building and running the quick tests:

make

Before submitting patches, run the Python regression tests suite:

make regrtest

Check the Makefile for more info.

Similar projects

  • pthreading - uses pthread_mutex and pthread_cond apis directly via ctypes. This introduces undefined behavior and actually slower and increases cpu usage in most cases compared to the original Python implementation.
Release History

Release History

0.3

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
cthreading-0.3.tar.gz (18.7 kB) Copy SHA256 Checksum SHA256 Source Nov 2, 2015

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting