AttributeError:“\u MainProcess”对象没有属性“\u exiting”

2024-10-05 14:28:33 发布

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

我有一个

AttributeError: '_MainProcess' object has no attribute '_exiting'

从Python应用程序。不幸的是,这段代码必须运行python2.5,因此processing模块现在被称为multiprocessing。我所做的是用一个Queue创建一个Process,并在主进程的队列中put一个项目。查看processing.queue代码,我可以看到一个feeder线程已经启动。然后,这个进纸线程将检查currentProcess()._exiting,但是currentProcess()计算结果为_MainProcess,该属性在processing.process模块中没有所述属性。如何解决这个问题?它是processing中的错误吗?如果是,我可以简单地使用currentProcess()._exiting = False进行monkeypatch吗?在

最小示例:

^{pr2}$

Tags: 模块no代码应用程序属性objectattribute线程
1条回答
网友
1楼 · 发布于 2024-10-05 14:28:33

我不知道在这种情况下为什么要pickle一个函数,如果你真的想这么做,看看这个答案:Is there an easy way to pickle a python function (or otherwise serialize its code)?

否则,这适用于Python2.6(我知道您正在寻找2.5,但我没有2.5)。我已将lambda函数替换为常规函数,并将其提供给处理构造函数:

from multiprocessing import Process, Queue

def simple():
    return 1

class Worker(Process):
    def __init__(self, args):
        Process.__init__(self, args=args)
        self.queue = Queue()

    def run(self):
        element = self.queue.get()
        print element

if __name__ == '__main__':
    w = Worker(args=[simple])
    w.start()
    w.join()

相关问题 更多 >