Pathos(python模块)在IDE和shell中的行为不同

Pathos(python模块)在IDE和shell中的行为不同,python,multiprocessing,pycharm,pathos,Python,Multiprocessing,Pycharm,Pathos,我试图理解如何使用Pathos包来运行调用函数的函数。据我所知,Pathos相对于主多处理包的优势在于它允许函数中包含函数。然而,我似乎无法让它工作。下面是我能想到的最简单的例子: def testf(x): print(x) import dill import pathos from pathos.multiprocessing import ProcessingPool pool = ProcessingPool(nodes=3) out2 = pool.map(testf, [

我试图理解如何使用Pathos包来运行调用函数的函数。据我所知,Pathos相对于主多处理包的优势在于它允许函数中包含函数。然而,我似乎无法让它工作。下面是我能想到的最简单的例子:

def testf(x):
    print(x)

import dill
import pathos
from pathos.multiprocessing import ProcessingPool
pool = ProcessingPool(nodes=3)
out2 = pool.map(testf, [1,2,3,4,5,6,7,8,9])
pool.close()
输出:

multiprocess.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/home/james/.local/lib/python3.6/site-packages/multiprocess/pool.py", line 119, in worker
    result = (True, func(*args, **kwds))
  File "/home/james/.local/lib/python3.6/site-packages/multiprocess/pool.py", line 44, in mapstar
    return list(map(*args))
  File "/home/james/.local/lib/python3.6/site-packages/pathos/helpers/mp_helper.py", line 14, in <lambda>
    func = lambda args: f(*args)
  File "<input>", line 2, in testf
NameError: name 'print' is not defined
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "<input>", line 5, in <module>
  File "/home/james/.local/lib/python3.6/site-packages/pathos/multiprocessing.py", line 136, in map
    return _pool.map(star(f), zip(*args)) # chunksize
  File "/home/james/.local/lib/python3.6/site-packages/multiprocess/pool.py", line 260, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/home/james/.local/lib/python3.6/site-packages/multiprocess/pool.py", line 608, in get
raise self._value
NameError: name 'print' is not defined
multiprocess.pool.RemoteTraceback:
"""
回溯(最近一次呼叫最后一次):
worker中的文件“/home/james/.local/lib/python3.6/site packages/multiprocess/pool.py”,第119行
结果=(True,func(*args,**kwds))
mapstar中的文件“/home/james/.local/lib/python3.6/site packages/multiprocess/pool.py”,第44行
返回列表(映射(*args))
文件“/home/james/.local/lib/python3.6/site packages/paths/helpers/mp_helper.py”,第14行,在
func=lambda参数:f(*参数)
testf中第2行的文件“”
名称错误:未定义名称“打印”
"""
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“”,第5行,在
文件“/home/james/.local/lib/python3.6/site packages/paths/multiprocessing.py”,地图第136行
return _pool.map(星形(f),zip(*args))35; chunksize
文件“/home/james/.local/lib/python3.6/site packages/multiprocess/pool.py”,地图第260行
返回self.\u map\u async(func、iterable、mapstar、chunksize).get()
get中第608行的文件“/home/james/.local/lib/python3.6/site packages/multiprocess/pool.py”
提升自我价值
名称错误:未定义名称“打印”

编辑:如果我将这段代码粘贴到shell控制台中,它似乎可以正常工作。如果我从我选择的IDE运行它,就没有骰子,PyCharm。因此,现在我的问题是,为什么相同的代码在相同版本的python解释器(3.6.1)中会有不同的工作方式,这取决于它是从shell还是应用程序内控制台运行的

这似乎与
pathos
无关。您似乎已经在代码中的某个地方覆盖了(内置的)
print
函数(您在问题中没有显示)。我运行了您发布的示例,没有出现异常。这似乎只在我从IDE运行时发生,而不是在我将完全相同的代码粘贴到shell中运行的python中时发生。现在我更困惑了。这似乎与
悲情没有任何关系。您似乎已经在代码中的某个地方覆盖了(内置的)
print
函数(您在问题中没有显示)。我运行了您发布的示例,没有出现异常。这似乎只在我从IDE运行时发生,而不是在我将完全相同的代码粘贴到shell中运行的python中时发生。现在我更糊涂了。