使用cython.parallel.parallel和nogil写入文件

时间:2014-02-18 22:02:01

标签: python parallel-processing cython

我正在用Cython弄湿我的脚。用它来考虑我一个总菜鸟。写入一个非常大的文件是我的代码中的一个主要瓶颈,所以我认为我会研究并行性,但是我没有找到任何有用于编写具有并行性的文件的有用信息。

甚至可以使用

with nogil, parallel():
写入文件的

语句?尝试编写字符串时出现编译错误:

Constructing Python tuple not allowed without gil

1 个答案:

答案 0 :(得分:3)

您不能在nogil块中使用任何Python函数或对象。如果你想用nogil做文件IO,你必须用C来做。这个blog post可能对你有帮助。具体来说,您可以从stdio中导入常用的C函数。这些功能应该可以在nogil块中使用。以下是我上面链接的博客文章:

from libc.stdio cimport *

cdef extern from "stdio.h":
    FILE *fopen(const char *, const char *)
    int fclose(FILE *)
    ssize_t getline(char **, size_t *, FILE *)