当前位置:首页 >> 计算机软件及应用 >>

Python核心编程第三版课后习题解答(第四章)


Python 核心编程第三版课后习题解答——第四章 4-1. 进程和线程的区别是什么?
进程是一个执行中的程序。每个进程都拥有自己的地址空间、内存、数 据栈以及其他用于跟踪执行的辅助数据。 线程是共享拥有相同的上下文,在同一个进程或主线程下并行运行的 “迷你进程”。

4-2. 在 Python 中,哪种类型的多线程应用表现得更 好,I/O 密集型还是计算密集型?
由于在 Python 中,GIL 的存在。且 GIL 会在 I/O 调用前被释放,以允许 其他线程在 I/O 执行的时候运行。而对计算密集型的应用来说,更倾向 于在整个线程的时间片内占用 GIL。因此,I/O 密集型的多线程应用会 表现的更好。

4-3. 如果在多 CPU 系统中使用多线程,你认为会有 哪 些 值得 注意的 事 情发 生吗? 你 是如 何看待 在 多 CPU 系统中运行多线程的?
单 CPU 并不能达成真正的多线程。在单 CPU 系统中,每个线程运行一 小段时间,如何让步给其它线程,以高速在各个线程之间切换。 在多 CPU 系统中,多个线程可以同时运行。若多个线程同时对一片数 据访问,由于访问的先后顺序不同,可能会导致产生不同的结果。此时 应该考虑同步。

对于 CPU 密集型的任务,并不适合使用多线程。

4-6.多线程网络聊天室
参考第二章中的习题解答。

4-8.线程池,一个生产者线程和多个消费者线程问题。
[python] view plain copy

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.

from from from from

random import randint time import sleep Queue import Queue threading import Thread,Lock,currentThread

lock = Lock()

def writes(queue): print "producing object for Q...",
queue.put('xxx', 1)

print "size now", queue.qsize() def readQ(queue):
val = queue.get(1)

print "consumed object from Q... size now", \
queue.qsize()

print currentThread().name

def writer(queue, loops): 19. for i in range(loops):
lock.acquire() writes(queue) lock.release() sleep(0.1)

def read(queue):
sleep(randint(2, 4))

while queue.qsize():
lock.acquire() readQ(queue) lock.release() sleep(randint(2, 4)) funcs = [writer, read]

34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.

nfuncs = range(5)

def main():
nloops1 = 100 q = Queue(1024) thread = [] t = Thread(target = writer, args = (q, nloops1)) thread.append(t)

for i in nfuncs:
t = Thread(target = read, args = (q,)) thread.append(t)

for i in range(len(thread)):
thread[i].start()

for i in range(len(thread)):
thread[i].join()

print "All Done" if __name__ == '__main__':
main()<strong> </strong>


相关文章:
Python核心编程第三版课后习题解答(第四章).doc
Python核心编程第三版课后习题解答(第四章)_计算机软件及应用_IT/计算机
Python核心编程第三版课后习题解答(第二章).doc
Python核心编程第三版课后习题解答(第章)_计算机软件及应用_IT/计算机_专业资料。Python核心编程第三版第二章课后习题解答 Python 核心编程第三版课后习题解答...
python核心编程第二版第4章习题答案.doc
python核心编程第版第4章习题答案 - 4-1.Python 对象。与所有
Python核心编程第三版课后习题解答(第四章).doc
Python核心编程第三版课后习题解答(第四章)_计算机软件及应用_IT/计算机
python核心编程第二版第3章习题答案.doc
python核心编程第版第3章习题答案_理学_高等教育_教育专区。python核心编程第版第3章习题答案 3-1.标识符。为什么 Python 中不需要变量名和变量类型声明? ...
Python核心编程(第二版)-习题答案_图文.pdf
Python核心编程(第版)-习题答案_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载 | 举报文档 Python核心编程(第版)-习题答案_计算机软件及...
Python核心编程第二版-习题答案_图文.pdf
Python核心编程第二版-习题答案_理学_高等教育_教育专区。Chun_App
Python 核心编程 第十三章习题答案.pdf
Python 核心编程 第十三章习题答案 - #!/usr/bin/env py
python核心编程第二版课后题答案第五章.doc
python核心编程第版课后题答案第五章_工学_高等教育_教育专区。python核心编程第版课后题答案,转载,仅供参考 def ji(x1, x2): '''5-2 返回两个数的...
PYTHON核心编程第二版课后题答案第六章.pdf
PYTHON核心编程第版课后题答案第六章 - def idcheck(): &
PYTHON核心编程第二版课后题答案第十五章.pdf
PYTHON核心编程第版课后题答案第十五章 - #15-1 识别下列字符串:“
python核心编程答案.pdf
python核心编程答案_工学_高等教育_教育专区。python核心编程答案 定期更新 ...(n) python 核心练习(第三章) import os ls=os.linesep def write(): ...
PYTHON核心编程第二版课后题答案第八章.pdf
PYTHON核心编程第版课后题答案第八章 - def loop(f, t, i): '''8-2 输入 3 个数字,从 f 计数到 t,i 为步长''' for n in xrange(f,t...
python核心编程第二版课后题答案第九章.doc
核心| 编程| python核心编程第版课后题答案第九章_理学_高等教育_教育专区。python核心编程第版课后题答案,转载,仅供参考 9.11 练习 91. 文件过滤. 显示...
Python核心第二版习题答案.doc
Python核心第二版习题答案_文学_高等教育_教育专区。python核心编程第二版 答案 (更新中) Pytho 核心编程第二版(第二,三,四,五章)答案 第二章 2-3 a=int(...
PYTHON核心编程第二版第2章习题答案.pdf
PYTHON核心编程第版第2章习题答案 - 2-1.变量,print 和字符串
python核心编程第二版课后题答案第六章.doc
python核心编程第版课后题答案第六章_工学_高等教育_教育专区。python核心编程第版课后题答案,转载,仅供参考 def idcheck(): '''6-2 修改 idcheck 使之...
python核心编程第二版第9章习题答案.doc
python核心编程第版第9章习题答案 - 91. 文件过滤. 显示一个文件
python核心编程第二版第2章习题答案.doc
python核心编程第版第2章习题答案_教育学_高等教育_教育专区。python核心编程第版第2章习题答案 2-1.变量,print 和字符串格式化操作符。启动交互式解释器,给...
python核心编程第二版课后题答案第八章.doc
python核心编程第版课后题答案第八章_工学_高等教育_教育专区。python核心编程第版课后题答案第八章,转载,仅供参考 def loop(f, t, i): '''8-2 输入...
更多相关文章: