线程:线程是操作系统能进行运算调度的最小单位。线程是一堆指令集合。不停的切换 进程:
IO密集型任务或函数:有阻塞 计算密集型任务函数
Python的GIL:全局解释器锁,在同一时刻只能有一个线程进入解释器
Python没有多线程
pycharm:IDE编译环境
1 import time 2 begin = time.time() 3 def foo(): 4 print('foo') 5 time.sleep(1) 6 def bar(): 7 print('bar') 8 time.sleep(2) 9 foo() 10 bar() 11 end = time.time() 12 print(end-begin)
主线程与子线程抢占CPU资源去执行。
import time import threading begin = time.time() def foo(n): print('foo%s'%n) time.sleep(1) print('end foo') def bar(n): print('bar%s'%n) time.sleep(2) print('end bar') t1 = threading.Thread(target=foo,args=(1,)) t2 = threading.Thread(target=bar,args=(2,)) t1.start() t2.start() print('....in the main...... ') end = time.time() print(end-begin)
import time import threading begin = time.time() def foo(n): print('foo%s'%n) time.sleep(1) print('end foo') def bar(n): print('bar%s'%n) time.sleep(2) print('end bar') t1 = threading.Thread(target=foo,args=(1,)) t2 = threading.Thread(target=bar,args=(2,)) t1.start() t2.start() print('....in the main...... ') t1.join() t2.join() end = time.time() print(end-begin)