Python Jupyter Notebook 上具有一个函数的多处理

问题描述 投票:0回答:1

我正在实现一个执行时间较长的算法,并且我需要将所有 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 但我的测试功能没有运行。

python jupyter-notebook multiprocessing
1个回答
0
投票

您没有向目标函数提供任何参数,但它需要一个位置参数 (

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) 
© www.soinside.com 2019 - 2024. All rights reserved.