关于线程并行问题
来源:11-2 多线程编程 - threading

qq_拱手河山讨欢_0
2019-03-26
老师在代码中讲到,因为线程并行问题,所以运行时间为0,但是在GIL中讲到同一时间只有一个线程会被cpu执行,那这里的线程并行为什么能实现那。
写回答
2回答
-
bobby
2019-04-07
我在这里回复吧,这里文本格式化效果好:
1. python的最大问题就是一个进程中的多个cpu无法同时分配到多个cpu上. 这句话我不是很理解是什么意思?
这句话的意思其实已经说明白了,你的理解大致也是对的,但是如果用java的话,多个线程可以同时分配到多个cpu上运行的
2. 既然多线程无法同时分配到多个cpu上执行,name多线程的优势在哪里呢
这里你的理解大致是没问题的,也就是对一个web系统来说,io的时间占比是远远高于cpu时间的,所以如果在cpu运行的时候io操作可以同时进行这样当一个线程切换出去以后,这个程序中的io操作部分是可以同时执行的,所以这里的重要点有两个:
1. io操作时间远远高于cpu时间
2. io操作和cpu操作可以同时进行,这个时候当一个线程被切换出去以后这个线程的io操作仍然是可以继续执行的
00 -
bobby
2019-03-27
1. 首先last_time为0不是因为并行的问题,而是thread1和thread2是两个并行的线程,但是程序会自动启动一个主线程,主线程负责启动两个线程,启动后继续往下执行,如果想打印时间需要等到两个线程执行完以后打印执行时间,gil的问题确实是一个时间只有一个线程会被cpu执行,所以从cpu的角度来看确实是串行的,但是因为gil会释放,所以当遇到io的时候gil会切换 这个时候当前线程的io是继续执行的
032019-04-04
相似问题
关于线程问题
回答 1
并发 并行和多线程 多进程 协程的关系
回答 1