Ophion引导了我正确的方法。尽管有文档,但必须
mkl_set_num_thread通过引用来传递参数。
现在我已经定义了函数,用于获取和设置线程
import numpyimport ctypesmkl_rt = ctypes.CDLL('libmkl_rt.so')mkl_get_max_threads = mkl_rt.mkl_get_max_threadsdef mkl_set_num_threads(cores): mkl_rt.mkl_set_num_threads(ctypes.byref(ctypes.c_int(cores)))mkl_set_num_threads(4)print mkl_get_max_threads() # says 4他们按预期工作。
编辑:根据Rufflewind,C函数的名称以大写形式编写,期望按值表示参数:
import ctypesmkl_rt = ctypes.CDLL('libmkl_rt.so')mkl_set_num_threads = mkl_rt.MKL_Set_Num_Threadsmkl_get_max_threads = mkl_rt.MKL_Get_Max_Threads


