Python多处理池.imap引发值错误:列表.删除(x) :x不在lis中

2024-10-02 18:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常简单的测试装置,它在不同的线程中实例化并关闭一个测试类'APMSim',该类是不可选取的,所以我必须使用多处理池.imap为避免它们在进程之间转移:

class APMSimFixture(TestCase):

    def setUp(self):
        self.pool = multiprocessing.Pool()
        self.sims = self.pool.imap(
            apmSimUp,
            range(numCores)
        )

    def tearDown(self):
        self.pool.map(
            simDown,
            self.sims
        )

    def test_empty(self):
        pass

但是,当我运行空的Python unittest时,我遇到了以下错误:

^{pr2}$

为什么会这样?有解决办法吗?在


Tags: 实例self进程defsetup线程multiprocessingtestcase
1条回答
网友
1楼 · 发布于 2024-10-02 18:26:35

multiprocessing正在从父进程中的辅助函数/子进程重新引发异常,但它在从子进程到父进程的传输过程中丢失了回溯。检查你的工作函数,是那个代码出错了。这可能有助于采取您的工人职能和改变:

def apmSimUp(...):
    ... body ...

收件人:

^{pr2}$

这将显式地打印完整的原始异常回溯(然后让它正常传播),这样您就可以看到真正的问题是什么。在

相关问题 更多 >