以下这段代码,在pycharm的终端和vscode中能正常运行,但是在pycharm的python console中运行报错。已在pycharm中更新过multiprocessing模块
from multiprocessing import Process, Queue
import time
def print_num(name, q):
while not q.empty():
print("{}\t\t{}".format(name, q.get()))
time.sleep(0.1)
if __name__ == "__main__":
q = Queue(20)
for i in range(20):
q.put(i)
ps = []
for i in range(4):
p = Process(target=print_num, args=("进程 " + str(i), q))
ps.append(p)
for i in ps:
i.start()
for p in ps:
p.join()
Traceback (most recent call last):
File "C:\Users\spiderx\AppData\Roaming\Python\Python37\site-packages\IPython\core\interactiveshell.py", line 3553, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-2-9849d47c306e>", line 1, in <module>
runfile('C:\\Users\\spiderx\\Documents\\python\\头条\\Demo.py', wdir='C:\\Users\\spiderx\\Documents\\python\\头条')
File "C:\install\PyCharm\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_umd.py", line 198, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "C:\install\PyCharm\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:\Users\spiderx\Documents\python\头条\Demo.py", line 21, in <module>
i.start()
File "C:\Users\spiderx\AppData\Local\Programs\Python\Python37\lib\multiprocessing\process.py", line 112, in start
self._popen = self._Popen(self)
File "C:\Users\spiderx\AppData\Local\Programs\Python\Python37\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Users\spiderx\AppData\Local\Programs\Python\Python37\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "C:\Users\spiderx\AppData\Local\Programs\Python\Python37\lib\multiprocessing\popen_spawn_win32.py", line 89, in __init__
reduction.dump(process_obj, to_child)
File "C:\Users\spiderx\AppData\Local\Programs\Python\Python37\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
_pickle.PicklingError: Can't pickle <function print_num at 0x00000127DBEBE0D8>: attribute lookup print_num on __main__ failed
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\spiderx\AppData\Local\Programs\Python\Python37\lib\multiprocessing\spawn.py", line 105, in spawn_main
exitcode = _main(fd)
File "C:\Users\spiderx\AppData\Local\Programs\Python\Python37\lib\multiprocessing\spawn.py", line 115, in _main
self = reduction.pickle.load(from_parent)
EOFError: Ran out of input