我正在实现一个执行时间较长的算法,并且我需要将所有 CPU 功率用于涉及繁重处理的部分代码。我以函数的形式编写了它,但是在将其作为多处理执行时遇到了问题。
import multiprocessing as mp
import os
shape = (len(ta52))
g5 = np.zeros(shape)
shape = (5,len(ta52))
g6 = np.zeros(shape)
m=0
def test(ta52):
m=0
for i in ta52:
s11=[]
for j in s1:
s11.append(sum(c1!=c2 for c1,c2 in zip(i,j)))
s12=[]
for j in s2:
s12.append(sum(c1!=c2 for c1,c2 in zip(i,j)))
s13=[]
for j in s3:
s13.append(sum(c1!=c2 for c1,c2 in zip(i,j)))
s14=[]
for j in s4:
s14.append(sum(c1!=c2 for c1,c2 in zip(i,j)))
s15=[]
for j in s5:
s15.append(sum(c1!=c2 for c1,c2 in zip(i,j)))
sp=min(s11)+min(s12)+min(s13)+min(s14)+min(s15)
g5[m]=sp
g6[0,m]=min(s11)
g6[1,m]=min(s12)
g6[2,m]=min(s13)
g6[3,m]=min(s14)
g6[4,m]=min(s15)
m=m+1
if __name__ == '__main__':
p = mp.Process(target=test)
p.start()
print('Waiting for mp_func to end')
p.join()
#print(g5)
stop = timeit.default_timer()
print('Time: ', stop - start)
结果是: 等待 mp_func 结束 时间:0.17289580000000626 但我的测试功能没有运行。
您没有向目标函数提供任何参数,但它需要一个位置参数 (
ta52
)。
您的示例根本不会运行,因为
shape = (len(ta52))
引用了未绑定的变量 ta52
,所以我想知道您如何获得打印输出。也许示例中缺少某些内容?
如果定义了
ta52
,您将执行以下操作:
if __name__ == '__main__':
p = mp.Process(target=test, args=(ta52,)) # Add argument here
p.start()
print('Waiting for mp_func to end')
p.join()
stop = timeit.default_timer()
print('Time: ', stop - start)