Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python';这是多重处理。程序未完成连接()_Python_Multiprocessing - Fatal编程技术网

Python';这是多重处理。程序未完成连接()

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' ):

我有一个非常有用的程序。因此,我希望使它更快,并尝试进行多处理。当我让程序使用低分辨率时(我在做功率谱;低分辨率意味着它会很快完成,但不会很精确),它工作得很好。我的速度提高了约2倍,但在执行高分辨率操作时,我在完成之前终止了它,因为它的运行时间比单处理器长

我的主文件是这样的(我定义了
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])