猿问

从脚本中删除线程使用

我正在使用的下一个脚本用于侦听使用IMAP IDLE的IMAP连接,并且在很大程度上取决于线程。对我而言,消除踩踏声调用并仅使用主线程的最简单方法是什么?作为一个新的python开发人员,我尝试了编辑def __init__(self, conn):方法,但是却收到了越来越多的错误


POPMUISE
浏览 142回答 2
2回答

jeck猫

据我所知,此代码是无可救药的,因为作者使用了“ imaplib2”项目库,该库强制使用了此代码永远不会使用的线程模型。只会创建一个线程,而不必是一个线程,只需选择即可imaplib2。但是,如imaplib2文档所述:该模块提供了与标准python库模块imaplib提供的API几乎相同的API,主要区别在于该版本允许在IMAP4服务器上并行执行命令,并实现了IMAP4rev1 IDLE扩展。(imaplib2可以替换现有客户端中的imaplib,而无需更改代码,但请注意下面的警告。)这样看来,您应该可以扔掉很多东西,class Idler只需要使用连接即可M。我建议您先阅读Doug Hellman出色的Python每周模块for imaplib模块,然后再阅读正式文档。您需要对代码进行反向工程以找出其意图,但对我来说,它看起来像:打开与GMail的连接检查收件箱中看不见的邮件计算来自(2)的看不见的消息在gateway.push.apple.com上向某些服务发送虚拟消息等待通知,转到(2)关于该代码,也许最有趣的事情是它似乎没有做任何事情,尽管sendPushNotification(第4步)所做的只是一个谜,并且使用imaplib2特定服务的一行代码:self.M.idle(callback=callback)使用模块文档中没有的命名参数。您知道这段代码是否曾经运行过吗?除了不必要的复杂性之外,还有一个下降的原因imaplib2:它独立存在于sourceforge和PyPi上,两年前一位维护者声称它“将努力使其与原始版本保持最新”。你有哪一个?您要安装哪个?
随时随地看视频慕课网APP

相关分类

Python
我要回答