PyFFTW多线程无法正常工作

时间:2015-04-09 09:40:42

标签: python multithreading pyfftw

我正在运行基于PyFFTW包装器的FFTW3库代码。在PyFFTW的计划函数调用中,有一个参数" thread"指定要使用的线程数。我使用基本判断Activity Monitor来判断多线程是否有效。事实证明,即使我指定thread = 4,下面的代码也会在一个CPU上运行。我的笔记本电脑是一台8核的Mac。这是我的代码。

import pyfftw
n_cpu = 4
flags = ('FFTW_MEASURE','FFTW_DESTROY_INPUT')
x_buffer = pyfftw.n_byte_align_empty((8192,8192,), 16, 'complex128')
f_buffer = pyfftw.n_byte_align_empty((8192,8192,), 16, 'complex128')
fftObj  = pyfftw.FFTW(x_buffer, f_buffer,  axes=(-2,-1), direction='FFTW_FORWARD',  flags=flags, thread=n_cpu)
fftObj()

当我运行fftObj()时,计算机似乎在一个CPU上运行(CPU使用率为99%,而预期值应为400%)。我想要的是让我的笔记本电脑的CPU之间分配FFT任务。

除了尝试pyfftw之外,我尝试用C语言编写一些其他代码,我从活动监视器中看到CPU使用率高于100%。这意味着C代码在多个CPU上运行,而我的机器确实具有多核功能。

有什么我错过了打开pyfftw的多线程吗?或者我是否误解了参数的含义?

related problem

1 个答案:

答案 0 :(得分:2)

参数为threads而非thread。应该选择多余和无效的参数。想要在github上留下问题吗?