我想在python 3.6中使用multiprocessing.Pool来并行运行函数f,用于不同的输入。我也想用jupyter笔记本来做这个,因为我想用输出来尝试很多不同的东西。我知道这是not supported。在调用multiprocessing.Pool之前,我启动的子进程使用在程序中创建的变量。即,在启动子进程之前存在共享变量(我正在使用Linux平台)。当我启动它时,我发现对于前一个或两个输入,该函数不会执行。它进入函数,运行一行或两行,然后似乎挂起(我一直在pool.join()中无限期地等待。该函数成功完成所有其他输入 - 我在函数的开头和结尾都有一个print语句,所以我知道它已经完成了哪些输入。我已经尝试删除前两个输入,但问题不依赖于输入值。它似乎是在交互模式下使用multiprocessing.Pool的工件。作为一个黑客,我用一些虚拟输入填充输入的前面,在函数中我检查的第一件事是,如果它是一个虚拟输入,那么只返回None。这似乎工作(pool.join()完成,我得到控制权)。有没有更好的方法来做同样的事情,没有这个丑陋的黑客?
另外,我不明白限制非交互模式的原因,提到here。有人可以解释一下吗?
更多信息: 我正在调用的函数输出一个大的pandas数据帧。