《Python程序设计》习题与答案-python教材答案

第12章 Windows系统编程

12.1 查阅相关资料,解释注册表几大根键的用途。 答:略

12.2 选择一个编写好的Python程序,将其转换为exe可执行文件。 答:略,请参考书中相关介绍。

12.3 编写代码,使用至少3中不同的方法启动Windows自带的计算器程序。 答: 第一种方法: >>> import os

>>> os.system('calc.exe')

第二种方法: >>> import os

>>> os.popen('calc.exe')

第三种方法: >>> import os

>>> os.startfile('calc.exe')

第四种方法:

>>> import win32api

>>> win32api.ShellExecute(0, 'open', 'calc.exe', '', '', 1)

第五种方法:

>>> import win32process >>> handle=win32process.CreateProcess(r'c:\\windows\\system32\\calc.exe','', None,None,0, win32process.CREATE_NO_WINDOW, None, None,win32process.STARTUPINFO())

12.4 编写代码,检测您所使用的操作系统版本。 答:略,请参考12.5节。

第13章 多线程编程

13.1 简单叙述创建线程的方法。 答:

Thread类支持使用两种方法来创建线程,一种是为构造函数传递一个可调用对象,另一种是继承Thread类并在派生类中重写__init__()和run()方法。创建了线程对象以后,可以调用其start()方法来启动,该方法自动调用该类对象的run()方法,此时该线程处于alive状态,直至线程的run()方法运行结束。

13.2 简单叙述Thread对象的方法。 答:

(1)join([timeout]:阻塞当前线程,等待被调线程结束或超时后再继续执行当前线程的后续代码,参数timeout用来指定最长等待时间,单位为秒。

(2)isAlive():测试线程是否处于运行状态

(3)start():自动调用run()方法,启动线程,执行线程代码。

(4)run():线程代码,用来实现线程的功能与业务逻辑,可以在子类中重写该方法来自定义线程的行为。

13.3 简单叙述线程对象的daemon属性的作用和影响。 答:

在脚本运行过程中有一个主线程,若在主线程中创建了子线程,当主线程结束时根据子线程daemon属性值的不同可能会发生下面的两种情况之一:1)当某子线程的daemon属性为False时,主线程结束时会检测该子线程是否结束,如果该子线程尚未完成,则主线程会等待它完成后再退出;2)当某子线程的daemon属性为True时,主线程运行结束时不对该子线程进行检查而直接退出,同时所有daemon值为True的子线程将随主线程一起结束,而不论是否运行完成。daemon属性的值默认为False,如果需要修改,则必须在调用start()方法启动线程之前进行修改。

13.4 解释至少3种线程同步方法。 答:

(1)使用Condition对象可以在某些事件触发后才处理数据,可以用于不同线程之间的通信或通知,以实现更高级别的同步。Condition对象除了具有acquire()和release()方法之外,

还有wait()、notify()、notify_all()等方法。下面通过经典生产者/消费者问题来演示Condition对象的用法。

(2)Q

>>闂傚倷娴囬褏鎹㈤幒妤€纾婚柣鎰梿濞差亜鍐€妞ゆ劧缍嗗ḿ鐔兼⒑绾懏褰х紒鐘冲灩缁牓宕掗悙瀵稿帾婵犵數濮寸换妯侯瀶椤曗偓閺岋絾鎯旈娑橆伓<<
12@gma联系客服:779662525#qq.com(#替换为@)