python 2线程锁、rlock和条件的c实现

cthreading的Python项目详细描述


cthreading在c中实现python 2锁、rlock和条件,加速 向上线程同步并降低CPU使用率。

状态:Travis-CI Build Status

性能

cthreading消除了线程的开销。rlockthreading.condition在python 2中用纯python实现。 特别是,threading.condition是使用轮询实现的。在 python 3threading.condition是在没有轮询的情况下实现的; cthreading在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

您的应用程序不太可能有类似的工作负载;不要期望 这一改进。

有关详细信息,请参见https://github.com/nirs/cthreading/wiki/performance

用法

在任何其他模块和monkeypatch之前导入cthreading 线程模块。从这里开始,threading.lock、threading.rlock和 线程。条件正在使用cthreading。

importcthreadingcthreading.monkeypatch()

注意:如果线程模块 在调用cthreading.monkeypatch()之前导入。

测试平台

x86_64

  • Fedora 22/Python2.7.10
  • RHEL 7.2/Python 2.7.5
  • RHEL 7.2/Python 2.7.10+(上游)
  • RHEL 7.1/Python 2.7.5
  • RHEL 6.7/python-2.6.6
  • ubuntu 14.04服务器/python 2.7.6
  • ubuntu 12.04服务器/python 2.7.3(python回归测试不可用)
  • ubuntu 12.04/python 2.6.9(travis容器)
  • ubuntu 12.04/python 2.7.9(travis容器)

功率8e

  • RHEL 7.2/Python 2.7.5
  • RHEL 7.2/Python 2.7.10+(上游)

黑客攻击

对于基于RPM的发行版:

yum install python-devel python-test

对于基于deb的分布:

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

安装python包:

pip install pytest pytest-timeout yappi==0.93

建立并运行快速测试:

make

在提交修补程序之前,请运行python回归测试套件:

make regrtest

有关详细信息,请查看生成文件。

类似项目

  • pthreading-使用 pthread_mutex和pthread_cond api直接通过cTypes。这个 引入未定义的行为,实际上更慢并增加CPU 与原始python实现相比,在大多数情况下使用。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android:在ListView上使用setOnItemClickListener   使用Netbeans 7.0连接到SQL Server的java正在挂起   java Spring3依赖项注入不适用于mule   java Flink SQL结果字段与LocalDateTime上请求的类型错误不匹配   java找不到文件的结尾   考虑到NamingStrategy,java有没有办法将字符串转换为JsonNode?   使用Netbeans/ant部署java(命令行)应用程序   java如何修复Spring引导多部分上载中的“所需请求部分不存在”   java在应用程序启动时通过引用获取映射未知目标实体属性异常   java形状旋转问题Java2d   Weblogic服务器上的java ExecuteAndWaitInterceptor问题   JavaSpringBoot:project将图像保存在错误的路径中,并且在使用IDEIntellji打开时不显示图像   类向java接口添加方法   Swing组件上的Java 7泛型   sql server如何从java获取用户名。sql。联系   java如何检查该行是否与正则表达式(regex)冲突?   java如何在spring引导安全中为计数失败登录设置验证登录为false   图像如何在Java中使PNG的白色透明?