【发布时间】:2015-09-08 01:23:56
【问题描述】:
一个简单的例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import multiprocessing
class Klass(object):
def __init__(self):
print "Constructor ... %s" % multiprocessing.current_process().name
def __del__(self):
print "... Destructor %s" % multiprocessing.current_process().name
if __name__ == '__main__':
kls = Klass()
在__del__ 中执行current_process 时出现错误:
Constructor ... MainProcess
Exception AttributeError: "'NoneType' object has no attribute 'current_process'" in <bound method Klass.__del__ of <__main__.Klass object at 0x7f5c34e52090>> ignored
如果我更改变量名:
als = Klass()
得到正确的结果:
Constructor ... MainProcess
... Destructor MainProcess
我尝试了很多变量名,有些正常,有些错误。
为什么不同的实例名称,会导致__del__中的多处理模块为None?
【问题讨论】:
-
我看到了同样的结果……这很奇怪!
-
这里也一样。产生同样奇怪的结果。所以我猜你在
multiprocessing中发现了一个错误。 -
@jonrsharpe 查看 unutbu 的回答
-
@Sait 查看 unutbu 的回答