【发布时间】:2016-04-10 18:02:05
【问题描述】:
我有一个需要包含不同事物总和的数组,因此我想对其每个元素执行归约。 代码如下:
cdef int *a=<int *>malloc(sizeof(int) * 3)
for i in range(3):
a[i]=1*i
cdef int *b
for i in prange(1000,nogil=True,num_threads=10):
b=res() #res returns an array initialized to 1s
with gil: #if commented this line gives erroneous results
for k in range(3):
a[k]+=b[k]
for i in range(3):
print a[i]
直到有 with gil 代码运行良好,否则会给出错误的结果。 如何在不使用 gil 的情况下处理数组每个元素的减少,因为我认为 gil 会阻塞其他线程
【问题讨论】:
-
你
cdef int k了吗?
标签: python c++ c openmp cython