使用 pyqt5 写了个 UI 界面,在 QThread 线程池内调用 pyppeteer 出错:RuntimeError: There is no current event loop in thread 'Thread-2'.

以下是多线程类:

class WorkThread(QThread):
    trigger = pyqtSignal(list)

    def __init__(self,thNum,zh,tz,cf):
        super(WorkThread, self).__init__()
        self.thNum = thNum
        self.zh = zh
        self.tz = tz
    def run(self):
        # 程序配置初始化
        print('程序配置初始化')
        # 创建一个队列

        self.q = []
        for i in range(len(self.zh)):
            data = self.zh[i]
            self.q.append([i, data, self.tz])
        self.multiThread(self.q)

    async def main():
        browser = await launch()
        page = await browser.newPage()
        await page.goto('http://quotes.toscrape.com/js/')
        doc = pq(await page.content()) print('Quotes:', doc('.quote').length)
        await browser.close()

    def aJob(self,arg):
    # 从这调用,就报错
        asyncio.get_event_loop().run_until_complete(self.main())

    def multiThread(self,_lstParam):
        """
        多线程任务执行
        """
        from multiprocessing.dummy import Pool as ThreadPool
        pool = ThreadPool(self.thNum)
        pool.map(self.aJob, _lstParam)
        pool.close()
        pool.join()
        print("多线程作业已完成")

    def stop(self):
        self.flag = 0
        # 线程结束发出信号
        self.trigger.emit('主程序终止^1^')

请大神帮忙看看,类似pyppeteer这种异步协程如果配置多线程或线程池使用,成分感谢!!!

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!