注:数字代表行号
然后本人非计算机出身,如果问题太水,还请各位见谅
1 class CreateListThread(Thread):
2 def run(self):
3 entries = []
4 for i in range(30):
5 entries.append(i)
6 print(entries)
7
8
9 def use_create_list_thread():
10 for i in range(3):
11 t = CreateListThread()
12 t.start()
13 use_create_list_thread()
书上说线程是 cpu 执行的最小单位,线程本身不能控制自己的执行时间长短
我的理解-代码里的每句话和它的上一句,下一句都有可能不是在同一线程下执行,因为不确定什么时候就执行了其他线程。
第一个疑问
上面的代码,创建了三个线程类,是不是可以这么理解:线程运行到 3 ,突然中断,运行到 4 时是另一个线程,或者线程运行到 3 ,也运行到 4 ,运行到 5 时切换到了其他线程。不知道这么理解对吗?
第二个疑问
还是上面的代码,针对第一个疑问的疑问。
一个线程运行到 3 ,突然切换到另一个线程,这个线程是不是从 4 开始运行,还是从 2 开始。
第二个疑问
上面代码 3 的地方,是一个变量。虽然代码只有一份,也就是那一句话。
假设一个线程运行到 5 ,此时 entries 是[0],如果这时,切换到另一个线程,假设这个线程刚启动,那这个 entries 的值是什么?
如果是个[],是不是可以这么理解: entries 虽然代码只有一句,实际上每个线程都拥有各自的 entries ,操作 entries 时,并不影响他的值。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.