菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
3105
0

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

原创
05/13 14:22
阅读数 2119

以下是多线程类:

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/200
3105 点赞
0 评论
收藏
为你推荐 换一批