많은 프로그램을 사용하고 있습니다. 따라서 더 빨리 만들고 다중 처리를 시도하고 싶습니다. 내가 프로그램이 저해상도를 사용하게 만들 때 일종의 일을 잘 해냈다. (나는 파워 스펙트럼을하고 있는데, 저해상도는 빠른 것이지만 매우 정확하지는 않다는 것을 의미한다.) 나는 ~ 2x 속도를 가지지 만, 고해상도를 할 때 단일 프로세서보다 더 오랜 시간 동안 runned가 끝나기 전에 종료했습니다.파이썬의 다중 처리. 프로그램이 join()을 마칩니다.
내 주요 파일
import multiprocessing as mp
from ast_power import power_spectrum
tasks = mp.cpu_count()
bound = mp.Queue()
res = mp.Queue()
mint = [mp.Process(target=power_spectrum,args=(t,f,bound,res)) for i in range(tasks)]
DF = (f_max-f_min)/tasks
for i in mint:
i.start()
for i in range(1,tasks+1):
a = i*f_min
b = a+DF
c = df
d = 1
bound.put([a,b,c,d])
for i in mint:
i.join()
fr,p = [],[]
while tasks:
frp,pp = res.get()
frp,pp = list(frp),list(pp)
fr += frp
p += pp
tasks -= 1
그리고이
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])
처럼 내 ast_power
모습 내가 바로 그 일을되어 같은 것을 (나는 f_min,f_max,df,t,f
을 정의)입니까? 나는 그것이 높은 df
(저해상도) 및 저해상도가 아닌 매우 이상하다고 생각합니다. df
(고해상도)
매우 도움이됩니다.
파이썬과 멀티 프로세싱으로 GIL 문제를 찾았습니까? –