【发布时间】:2018-01-29 10:33:36
【问题描述】:
Cython,支持我解决这个错误...我已经展示了我的代码中生成的示例代码和错误。我正在使用 Anaconda3 最新的 Windows 发行版,如何在类中使用带有 args 的线程
#cytest.pyx
from threading import Thread
cdef class t(object):
cdef int a,b,nthreads
cpdef readonly list retlist
def __init__(self,int nthreads,int a=10,int b=10):
self.a = a
self.b = b
self.retlist = []
self.nthreads = nthreads
cdef mul(self,int c,int d):
cdef int n
n = (self.a*c)+(self.b*d)
self.retlist.append(n)
cpdef run_mul(self):
cdef int i
cdef object Thd
for i in range(self.nthreads):
Thd = Thread(target=self.mul, args=(10,20))
# Note: I got error in above arguments
Thd.start()
上面的文件 cytest.pyx 编译和导入如下..
import cytest
ts = cytest.t(4)
运行以下代码时出现如下错误
ts.run_mul()
错误如下......如何在cython中解决这个问题
Exception in thread Thread-11:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\threading.py", line 916, in
_bootstrap_inner
self.run()
File "C:\ProgramData\Anaconda3\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "stringsource", line 65, in
cfunc.to_py.__Pyx_CFunc_object____t____int____int___to_py.wrap
TypeError: wrap() takes exactly 3 positional arguments (2 given)
Exception in thread Thread-13:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\threading.py", line 916, in
_bootstrap_inner
self.run()
File "C:\ProgramData\Anaconda3\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "stringsource", line 65, in
cfunc.to_py.__Pyx_CFunc_object____t____int____int___to_py.wrap
TypeError: wrap() takes exactly 3 positional arguments (2 given)
Exception in thread Thread-12:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\threading.py", line 916, in
_bootstrap_inner
self.run()
File "C:\ProgramData\Anaconda3\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "stringsource", line 65, in
cfunc.to_py.__Pyx_CFunc_object____t____int____int___to_py.wrap
TypeError: wrap() takes exactly 3 positional arguments (2 given)
Exception in thread Thread-10:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\threading.py", line 916, in
_bootstrap_inner
self.run()
File "C:\ProgramData\Anaconda3\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "stringsource", line 65, in
cfunc.to_py.__Pyx_CFunc_object____t____int____int___to_py.wrap
TypeError: wrap() takes exactly 3 positional arguments (2 given)
【问题讨论】:
标签: python-3.x cython python-multithreading