2014-02-18 31 views
2

我正在用Cython弄溼我的腳。考慮一下我的總noob。寫入一個非常大的文件是我的代碼中的一個主要瓶頸,所以我認爲我會研究並行性,但是我還沒有找到任何有用的方法來編寫具有並行性的文件。使用cython.parallel.parallel和nogil寫入文件

它甚至有可能使用

with nogil, parallel(): 

語句寫入一個文件?嘗試編寫字符串時出現編譯錯誤:

Constructing Python tuple not allowed without gil 
+2

您不能在nogil塊中使用任何Python函數或對象。如果你想用nogil做文件IO,你必須用C來做。這篇博文可以幫助你:http://www.code-corner.de/?p=183 – jcrudy

+0

@jcrudy:你應該發佈這個答案。 – hivert

回答

2

您不能在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 *)