Python pathos池语句被挂起
我的程序似乎没有超出Pool(5)语句的范围。我在windows服务器上使用Python3.6,这是一台64位虚拟机,有8个虚拟CPU 代码如下Python pathos池语句被挂起,python,pathos,Python,Pathos,我的程序似乎没有超出Pool(5)语句的范围。我在windows服务器上使用Python3.6,这是一台64位虚拟机,有8个虚拟CPU 代码如下 import pathos.multiprocessing as mp poolObj = mp.Pool(5) docs = poolObj.map(nlp,textStr) 它在语句池(5)处挂起。我也尝试了ProcessingPool(5),同样的结果。我是《悲情》的作者。第一。。。如果您发布一段代码片段,试图回答您的问题的人可以
import pathos.multiprocessing as mp
poolObj = mp.Pool(5)
docs = poolObj.map(nlp,textStr)
它在语句池(5)处挂起。我也尝试了ProcessingPool(5),同样的结果。我是《悲情》的作者。第一。。。如果您发布一段代码片段,试图回答您的问题的人可以执行该代码片段,这会有所帮助。这有助于您获得更好的答案,因为它可以得到更好的诊断(在本例中,这可能是一个序列化问题,或者可能是
freeze\u支持问题,或者可能是一个生成问题)
在了解更多细节后,我可以提出以下建议:
- 你有C编译器吗?如果没有,那么您实际上没有使用
multiprocess
,这正是pathos
打算使用的。这是一把叉子
具有更多功能的多处理
。如果答案是
不,那么您需要安装一个,然后重新生成多进程
- 如果您使用的是
多进程
(见上文),但是,在windows上,您需要使用
pathos.helpers.freeze\u支持
。上的池是必需的
在大多数情况下都是窗口
- 如果以上两项都可以,那么我会检查你的目标是否正确
序列化,并且在windows上可以确认对象是否将被pickle
使用
dill正确执行多进程。检查(在dill
包装)
它也可能是上述一个或多个的组合。我不使用pathos
,但我会假设它将受到与常规多处理相同的限制,即在Windows上,多处理代码应该被屏蔽,如果它看起来像是特定的“窗口”本节不在中,但作了更一般的说明。我不知道这是为什么。上面的代码在函数main()中,如果name='main':虚拟化,则从函数main()中调用该函数?可能有一个控制过程循环的装置。您需要获得虚拟机软件提供商的支持。您键入的问题似乎与Python或Python模块无关。好的,那么需要进行任何特殊设置才能在VM上启用多处理吗?您知道这个设置吗?我以前没有C编译器,但现在安装了tcc。我使用conda forge安装了pathos,它还安装了多进程和dill。根据[link]()上的文档,建议不要强制使用python 3.3+C编译器。考虑到我仍然需要一个C编译器,我仍然需要下载多进程并单独构建,还是只需要从conda forge安装Paths就可以了?我会重新构建多进程
,因为您添加了一个C编译器。您可以通过执行import\u multiprocess
来测试所需的C库是否已构建。如果此操作成功,则表示您已通过构建问题。我安装了tcc并将其置于C:/Apps/tcc下,并将其添加到系统路径。从GitHub下载多进程源代码,构建并安装。我得到一个警告,“C扩展可能无法编译”。setup.py是否希望C编译器位于特定路径?我们可以指定它吗?我可以调用import\u multiprocess
,所以c编译问题似乎不存在。Pool(5)语句也在工作。它挂在Pool.map(nlp,textStr)语句上。我用dill.pickles(textStr)进行了检查,结果为真。我已经将完整的代码放在了GitHub的多进程问题上