Python';这是多重处理。程序未完成连接()
我有一个非常有用的程序。因此,我希望使它更快,并尝试进行多处理。当我让程序使用低分辨率时(我在做功率谱;低分辨率意味着它会很快完成,但不会很精确),它工作得很好。我的速度提高了约2倍,但在执行高分辨率操作时,我在完成之前终止了它,因为它的运行时间比单处理器长 我的主文件是这样的(我定义了Python';这是多重处理。程序未完成连接(),python,multiprocessing,Python,Multiprocessing,我有一个非常有用的程序。因此,我希望使它更快,并尝试进行多处理。当我让程序使用低分辨率时(我在做功率谱;低分辨率意味着它会很快完成,但不会很精确),它工作得很好。我的速度提高了约2倍,但在执行高分辨率操作时,我在完成之前终止了它,因为它的运行时间比单处理器长 我的主文件是这样的(我定义了f_min,f_max,df,t,f) 我的ast\u power是这样的 import numpy as np def power_spectrum(time, data, param, R='None' ):
f_min,f_max,df,t,f
)
我的ast\u power
是这样的
import numpy as np
def power_spectrum(time, data, param, R='None' ):
if R == 'None': #Normal
f_min = param[0]
f_max = param[1]
df = param[2]
w = param[3]
else: # Multiprocessing
f_min,f_max,df,w = param.get()
freq = np.arange(f_min,f_max,df)
for i in xrange( len(freq) ):
# Do the power spectrum...
# will produce; power, alfa, beta
if R == 'None': #Normal
return freq,power,alfa,beta
else: #Multiprocessing
R.put([freq,power,alfa,beta])
我做得对吗?我认为这是非常奇怪的,它适用于高df
(低分辨率),而不适用于低df
(高分辨率)
任何帮助都非常精确。join()调用将阻止该过程,直到它完成。如果在运行下一个进程之前等待每个进程完成,您将失去多进程的好处!使用start()让进程独立运行。您查找过python和多处理的GIL问题吗?这不是我在mint:I.start()的主文件
中所做的吗。如果不是,你能告诉我怎么做吗?(很抱歉突出显示不好。)好的,我错过了I.start()。但是您仍然不需要i.join()。拿出“i in mint:i.join()”你应该很好。好的,我的代码正在运行,很完美。但是现在它的“加速”是0.3,所以多处理速度较慢。
import numpy as np
def power_spectrum(time, data, param, R='None' ):
if R == 'None': #Normal
f_min = param[0]
f_max = param[1]
df = param[2]
w = param[3]
else: # Multiprocessing
f_min,f_max,df,w = param.get()
freq = np.arange(f_min,f_max,df)
for i in xrange( len(freq) ):
# Do the power spectrum...
# will produce; power, alfa, beta
if R == 'None': #Normal
return freq,power,alfa,beta
else: #Multiprocessing
R.put([freq,power,alfa,beta])