我在读编程Python第四版。在
以下是代码(Python3.2):
import _thread
def action(i):
print(i ** 32)
class Power:
def __init__(self, i):
self.i = i
def action(self):
print(self.i ** 32)
_thread.start_new_thread(action,(2,))
_thread.start_new_thread((lambda: action(2)), ())
obj = Power(2)
_thread.start_new_thread(obj.action,())
当我运行它时,屏幕上没有输出:
^{pr2}$有人对此有什么想法吗?在
为什么不使用
threading
模块(选中here)?在您的示例中,主线程在子线程可以打印任何内容之前退出。例如,如果在示例末尾添加以下内容,则可以在我的系统上运行:但在更复杂的情况下,您仍然不能保证主线程在所有子线程退出之前不会退出。您有以下选择:
下划线
_
表示它是一个私有API(thread
模块自2005年起就已过时);您应该改用threading
模块:您不需要显式地调用
.join()
方法;在主线程退出之前,非守护进程线程会自动加入。在当主线程退出时,整个进程退出。在
您需要让主线程等待其他线程完成。在
_thread
API中没有这方面的规定(它太低级了)。在如果愿意使用更好的API,可以使用
threading.Thread.join()
。在相关问题 更多 >
编程相关推荐