没法用threading模块去给taichi field变量赋值

import threading as td
import taichi as ti

@ti.data_oriented
class someclass(td.Thread):
    def __init__(self):
        td.Thread.__init__(self)
        self.a = ti.field(float, shape=50)
        self.b = [0 for i in range(50)]
    
    def calltd(self):
        threads = []
        for i in range(50):
            threads.append(td.Thread(target=self.tdworker, args=(i,)))
            threads[-1].start()
        for i in range(50):
            threads[i].join()
    
    def tdworker(self, i):
        self.a[i] = i
        self.b[i] = i
         
ti.init(arch=ti.cuda)
sc = someclass()
sc.calltd()

如代码所示,我使用threading模块来给一个field(也即self.a)变量赋值,但运行就会报错

RuntimeError: [taichi/rhi/cuda/cuda_driver.h:taichi::lang::CUDADriverFunction<void *>::operator ()@92] CUDA Error CUDA_ERROR_INVALID_CONTEXT: invalid device context while calling stream_synchronize (cuStreamSynchronize)
AssertionError: Slicing is not supported on ti.field
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: [llvm_context.cpp:taichi::lang::TaichiLLVMContext::add_struct_module@664] Assertion failure: std::this_thread::get_id() == main_thread_id_

但对于一般的列表变量赋值就没问题。