python中的多处理:attribute

2024-06-23 19:00:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用多处理,但我一直收到以下错误:

AttributeError: Can't get attribute 'processLine' on <module '__main__' 

(processLine函数返回word,所以我想问题就在这里,但我不知道如何解决它)

^{pr2}$

我得到的是: 进程ForkPoolWorker-1:

进程ForkPoolWorker-2:

进程ForkPoolWorker-3:

处理ForkPoolWorker-4:

回溯(最近一次呼叫):

文件“/Users/user/anaconda/lib/python3.6/multiprocessing/进程.py“,第249行,in\u引导

self.run()

文件“/Users/user/anaconda/lib/python3.6/multiprocessing/进程.py“,第93行,运行中

self._target(*self._args, **self._kwargs)

文件“/Users/user/anaconda/lib/python3.6/multiprocessing/池.py“,第108行,在worker中

task = get()

多处理用户/lib/anacondition3/user/File/队列.py“,第345行,在get中 返回_叉形酸洗器。装载(资源)

AttributeError:无法在上获取属性“processLine”

回溯(最近一次呼叫):

回溯(最近一次呼叫):

回溯(最近一次呼叫):

文件“/Users/user/anaconda/lib/python3.6/multiprocessing/进程.py“,第249行,in\u引导 自行运行() 文件“/Users/user/anaconda/lib/python3.6/multiprocessing/进程.py", 第249行,in_引导

self.run()

文件“/Users/user/anaconda/lib/python3.6/multiprocessing/进程.py“,第93行,运行中

self._target(*self._args, **self._kwargs)

文件“/Users/user/anaconda/lib/python3.6/multiprocessing/进程.py“,第93行,运行中

self._target(*self._args, **self._kwargs)

文件“/Users/user/anaconda/lib/python3.6/multiprocessing/池.py“,第108行,在worker中

task = get()

文件“/Users/user/anaconda/lib/python3.6/multiprocessing/池.py“,第108行,在worker中 任务=获取() 文件“/Users/user/anaconda/lib/python3.6/multiprocessing/队列.py“,第345行,在get中 返回_叉形酸洗器。装载(资源) 文件“/Users/user/anaconda/lib/python3.6/multiprocessing/进程.py“,第249行,in\u引导 自行运行() 文件“/Users/user/anaconda/lib/python3.6/multiprocessing/队列.py“,第345行,在get中 返回_叉形酸洗器。装载(资源) 文件“/Users/user/anaconda/lib/python3.6/multiprocessing/进程.py“,第93行,运行中 自我目标(*self.\u args,**self.\u kwargs) AttributeError:无法在上获取属性“processLine” AttributeError:无法在上获取属性“processLine” 文件“/Users/user/anaconda/lib/python3.6/multiprocessing/池.py“,第108行,在worker中 任务=获取()

文件“/Users/user/anaconda/lib/python3.6/multiprocessing/队列.py", 345号线,在get

return _ForkingPickler.loads(res)

AttributeError:无法在上获取属性“processLine”


Tags: 文件inpyselfget进程libargs
1条回答
网友
1楼 · 发布于 2024-06-23 19:00:22

multiprocessing模块需要能够安全地导入模块。任何不在函数或类内的代码都应受到标准Python导入保护:

if __name__ == '__main__':
    ...code goes here...

但是你的代码还有其他问题。例如,你有:

^{pr2}$

…但是append不返回值,因此它总是将None分配给word。在

与其使用for循环反复调用pool.apply_async,不如考虑使用pool.map_async,或者如果实际上不需要异步行为,则只使用pool.map。在

相关问题 更多 >

    热门问题