我有一个函数func1()
,我想在其中使用多线程进行并行工作。我在该函数内定义了另一个名为func_thread()
的函数,以访问一些局部变量并避免将其传递给线程函数。但是,对于所有那些只读变量,我没有任何问题。但是,对于输出值({x
,这里所有线程都在向x
添加值),我有麻烦。
在这种情况下,我收到x referenced before assignment
错误。
def func1():
lc = threading.Lock()
x = np.zeros((100,100))
def func_thread():
lc.acquire()
x = x + np.random.random((100,100))
lc.release()
在这种情况下,我收到global variable x is not defined
错误!
def func1():
x = np.zeros((100,100))
def func_thread():
global x
x = x + np.random.random((100,100))