采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师在代码中讲到,因为线程并行问题,所以运行时间为0,但是在GIL中讲到同一时间只有一个线程会被cpu执行,那这里的线程并行为什么能实现那。
我在这里回复吧,这里文本格式化效果好:
1. python的最大问题就是一个进程中的多个cpu无法同时分配到多个cpu上. 这句话我不是很理解是什么意思?
这句话的意思其实已经说明白了,你的理解大致也是对的,但是如果用java的话,多个线程可以同时分配到多个cpu上运行的
2. 既然多线程无法同时分配到多个cpu上执行,name多线程的优势在哪里呢
这里你的理解大致是没问题的,也就是对一个web系统来说,io的时间占比是远远高于cpu时间的,所以如果在cpu运行的时候io操作可以同时进行这样当一个线程切换出去以后,这个程序中的io操作部分是可以同时执行的,所以这里的重要点有两个:
1. io操作时间远远高于cpu时间
2. io操作和cpu操作可以同时进行,这个时候当一个线程被切换出去以后这个线程的io操作仍然是可以继续执行的
1. 首先last_time为0不是因为并行的问题,而是thread1和thread2是两个并行的线程,但是程序会自动启动一个主线程,主线程负责启动两个线程,启动后继续往下执行,如果想打印时间需要等到两个线程执行完以后打印执行时间,gil的问题确实是一个时间只有一个线程会被cpu执行,所以从cpu的角度来看确实是串行的,但是因为gil会释放,所以当遇到io的时候gil会切换 这个时候当前线程的io是继续执行的
我理解的意思是: python中的多线程并行运行,其实并不是真正意思上的一起执行。其实还是有个先后顺序的,只是在执行A线程需要等待的时候,GIL锁释放B线程在运行。 不知道我理解的对吗?
在单cpu的情况先,所有语言的多线程都是不是一起执行的,只有多cpu才会存在同时执行的可能,python的最大问题就是一个进程中的多个cpu无法同时分配到多个cpu上
1.python的最大问题就是一个进程中的多个cpu无法同时分配到多个cpu上. 这句话我不是很理解是什么意思? 2.既然多线程也不是一起执行。那多线程比单线程更加快的地方,其实就在于单线程需要等,而多线会在等的时间里由其他线程去执行其他操作,就相当于cpu每时每刻都在操作,所以其实多线程比单线成节约的时间就是这部分等的时间。 不知道我理解的对吗?
登录后可查看更多问答,登录/注册
socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO
1.2k 31
1.1k 24
1.0k 16
1.4k 10
1.1k 9