粗略代码:
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 中使用多处理包。
我知道这不是你要找的答案,但它解释了你的错误。您可以在该链接中阅读有关解决方法的更多信息。