【python – Cython并行读取文件并绕过GIL】教程文章相关的互联网学习教程文章

python-Cython字典/地图【代码】

我有一个元素列表,像这样的标签对:[[e1,l1),(e2,l2),(e3,l1)] 我必须计算两个元素共有多少个标签-即.在上面的e1和e3列表中,共有标签l1,因此共有1个标签. 我有这个Python实现:def common_count(e_l_list):count = defaultdict(int)l_list = defaultdict(set)for e1, l in e_l_list:for e2 in l_list[l]:if e1 == e2:continueelif e1 > e2:count[e1,e2] += 1else:count[e2,e1] += 1l_list[l].add(e1)return count它需要一个类似于上...

如何使用cython将python类公开给C【代码】

如何使用cython将python对象公开给C?我知道如何为函数完成此操作,但是不确定是否可以在类中实现. 本质上,我有一个用cython编写的数据结构,必须由C填充.填充后,C代码将调用cython方法并传递该对象.该方法中的cython代码应该能够访问对象的数据.解决方法:答案是使用“public extension types”(特别是“公共扩展类型”). 一个简单的例子是:cdef extern from "cpp_file.hpp":void modifyMyClass(MyClass)cdef public class MyClass ...

python-Cython无法找到共享的对象文件【代码】

我正按照我在网上找到的指示,尝试从Cython链接到我自己的C库,包括以下答案: Using Cython To Link Python To A Shared Library 我正在通过Spyder运行IPython. 我的setup.py看起来像这样:from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize import numpy as npsetup(ext_modules = cythonize([Extension("*",["*.pyx"],libraries =["MyLib"],extra_compile_args = ...

Cython程序比普通的Python慢​​(10M选项3.5s与3.25s Black Scholes)-我缺少什么?【代码】

好的,这是我下面的第一个Cython程序,该代码为期货的欧洲期权定价(无股息的Black Scholes).它在10M选项上的运行时间为3.5秒,而我下面用纯正的numpy Python 3.25s发布的代码则与之相对.谁能指出为什么我的Cython代码比较慢-就像是因为我使用循环而不是矢量化调用(不确定在C中如何做到这一点,但是生成的cython代码似乎可以矢量化它).即使变量是从numpy数组传入的,也可以在该循环周围使用nogil和openmp吗?在Cython的示例上发布的简单示...

python-为什么Cython的pip安装需要这么长时间?

几分钟前,我尝试在计算机上安装Cython(当前在Windows 10,Python 3.6上运行),并在命令提示符下键入“ pip install Cython”,因此它已成功下载,现在安装仍在进行,已经工作了大约10分钟,所以出了点问题. NumPy也发生了同样的情况,但是我已经放弃了安装,因为现在对我而言这不是必需的.有任何想法吗?在我更新Visual C之前,因为当我尝试安装NumPy时,发生了错误,并指示我安装了最新的Visual C版本,因此我使用错误消息附带的链接进行了安装...

采取在Cython中使用C创建的列表集要比纯Python慢​​得多-为什么?【代码】

在此示例中,我展示了两种使用Cython创建字符串列表的不同方法.一种使用char指针数组(和strcpy C函数),另一种通过简单地将元素追加到列表中. 然后,我将这些列表中的每一个传递到set函数中,然后看到性能完全不同. 问题-如何使用字符指针创建具有相同性能的列表? 在Cython中创建列表的简单功能from libc.string cimport strcpydef make_lists():cdef:char c_list[100000][3]Py_ssize_t ilist py_list = []for i in range(100000):str...

python-Cython的意外输出和返回值【代码】

首先,我将Cython 0.18与Python 2.7.4结合使用.我遇到了一个相当奇怪的错误,但不确定为什么.这是玩具代码:from cpython cimport boolcpdef unsigned int func(char *seq1, char *seq2, bool case_sensitive=True):print 'seq1', seq1, len(seq1)print 'seq2', seq2, len(seq2)print#take care of case sensitivityif not case_sensitive:#this is kinda hacky, but I've gotta assign the lowercased string to a Python object be...

python-适用于Appengine的Cython

是否可以在appengine中使用Cython(特定于Python 2.7)?我可以在某些代码执行不佳时看到使用它,并且可以通过具有静态定义的类型或循环优化等来使用速度提升.解决方法:不,这显然是不可能的. GAE对您可以在其沙箱中运行的内容有非常严格的限制,而最明确说明的限制之一是cannot run arbitrary C code:All code for the Python runtime environment must be pure Python, and not include any C extensions or other code that must be...

python-优化Cython代码以进行numpy方差计算【代码】

我正在尝试优化我的cython代码,似乎还有很多改进的余地,这是IPython笔记本中%prun扩展的配置文件的一部分:7016695 function calls in 18.475 secondsOrdered by: internal timencalls tottime percall cumtime percall filename:lineno(function)400722 7.723 0.000 15.086 0.000 _methods.py:73(_var)814815 4.190 0.000 4.190 0.000 {method 'reduce' of 'numpy.ufunc' objects}1 1.855 1.85...

如何根据Cython中的Python版本有条件地声明代码?【代码】

我有以下pxd标头,用于扩展常规Python模块:#!/usr/bin/env python # coding: utf-8cimport cython@cython.locals(media_type=unicode, format=unicode, charset=unicode, render_style=unicode) cdef class BaseRenderer(object):"""All renderers should extend this class, setting the `media_type`and `format` attributes, and override the `.render()` method."""@cython.locals(indent=int, separators=tuple)cpdef object...

python-Cython中从现有数组和变量创建新数组的最快方法是什么【代码】

假设我有一个数组from array import array myarr = array('l', [1, 2, 3])和一个变量:myvar = 4什么是创建新数组的最快方法:newarray = array('l', [1, 2, 3, 4])您可以假设所有元素均为“长”类型 我试图创建一个新的数组并使用array.append()不知道它是否最快.我当时在考虑使用memoryview像这样:malloc(4 * sizeof(长))但我不知道如何将较短的数组复制到memoryview的一部分.然后将最后一个元素插入最后一个位置. 我对Cython很...

python-cython中的可能优化:numpy数组【代码】

以下是我的Cython代码,用于从多元正态分布中提取.我使用循环是因为每次我都有不同的密度. (conLSigma是Cholesky因子) 这会花费很多时间,因为我需要为每个循环进行逆分解和Cholesky分解.它比纯python代码要快,但是我想知道是否有什么方法可以提高速度.from __future__ import divisionimport numpy as np cimport numpy as np ctypedef np.float64_t dtype_tcimport cython @cython.boundscheck(False) @cython.wraparound(False)de...

python-Cython循环遍历像素仍然很慢【代码】

我在常规python代码之间没有速度差异.它说瓶颈是html文件中的最后两行代码.有没有办法解决? 我正在尝试做的是遍历像素并向其中添加rgb值低于210的坐标.from PIL import Image import numpy as np import time import cython import cv2filename = "/home/user/PycharmProjects/Testing/files/file001.png" image = Image.open(filename) size = width, height = image.size image_data = np.asarray(image)cdef list list_text = ...

python-Cython是否提供任何合理简便有效的方法来迭代Numpy数组,就好像它们是平坦的一样?【代码】

假设我要实现Numpy的x[:] += 1在Cython.我可以写@cython.boundscheck(False) @cython.wraparoundcheck(False) def add1(np.ndarray[np.float32_t, ndim=1] x):cdef unsigned long ifor i in range(len(x)):x[i] += 1但是,这仅适用于ndim =1.我可以使用add1(x.reshape(-1))但这仅适用于连续的x. Cython是否提供任何合理简单有效的方法来迭代Numpy数组,就像它们是平坦的一样? (在Cython中重新实现此特定操作没有任何意义,因为上述Nu...

python-Cython类AttributeError【代码】

我已经开始尝试使用Cython并遇到以下问题.考虑以下表示3D空间中顶点的类:#Vertex.pyx cdef class Vertex(object):cdef double x, y, zdef __init__(self, double x, double y, double z): self.x = xself.y = yself.z = z现在,我尝试从Python控制台创建一个对象:import Vertex as vt v1 = vt.Vertex(0.0, 1.0, 0.0) 效果很好.但是,当我尝试访问类属性时,出现了AttributeError:print v1.x ------------------------------...