我正在用Cython弄湿我的脚。用它来考虑我一个总菜鸟。写入一个非常大的文件是我的代码中的一个主要瓶颈,所以我认为我会研究并行性,但是我没有找到任何有用于编写具有并行性的文件的有用信息。
甚至可以使用
with nogil, parallel():
写入文件的语句?尝试编写字符串时出现编译错误:
Constructing Python tuple not allowed without gil
答案 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 *)