如何初始化目标不带参数的 Python 多处理进程?



粗略代码:

from multiprocessing import Process
def getPAprofilesPages():
#do stuff here
def getPBprofilesPages():       
#do stuff here
P1 = Process(target = getPAprofilesPages, args = [] )
P2 = Process(target = getPBprofilesPages, args = [] )

请注意,这些函数不带任何参数。 如上所述,我尝试将参数设置为等于 None、((、(,( 和 [],并在初始化中完全省略它。 无论如何,尝试在解释器中运行P1.start()P2.start()时,我会收到相同的错误:

>>> Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:Users******AppDataLocalProgramsPythonPython37libmultiprocessingspawn.py", line 105, in spawn_main
exitcode = _main(fd)
File "C:Users******AppDataLocalProgramsPythonPython37libmultiprocessingspawn.py", line 115, in _main
self = reduction.pickle.load(from_parent)
AttributeError: Can't get attribute 'getPAprofilesPages' on <module '__main__' (built-in)>

以下代码在脚本中工作正常


def main():
...
all your other code goes here
... 
from multiprocessing import Process
P1 = Process(target = getPAprofilesPages )
P2 = Process(target = getPBprofilesPages )
P1.start()
P2.start()
def getPAprofilesPages():
#do stuff here
pass
def getPBprofilesPages():
#do stuff here
pass
if __name__ == '__main__':
main()

但是,你说你在解释器中运行它,这就是你的问题所在,你不能在交互式 Python 中使用多处理包。

我知道这不是你要找的答案,但它解释了你的错误。您可以在该链接中阅读有关解决方法的更多信息。

最新更新