#老板否定了我弄了半个月的东西,然后觉得我2天做出来的东西挺好的...
#可能这就是面向老板编程吧...
#然后开始发现需要用响应式来面对各种尺寸的屏幕,有点蛋疼,说明代码还是写得不好,稍有变化改动的地方还是很多,想写一个改代码补丁,在可能需要改的地方加上mark,然后直接在多处代码上修改...
#最近开始看vue的router和vuex,以前只是使用vuejs,现在开始全家桶了...
我们都知道python有一个GIL的,说是python多线程不能有效利用多核,注意,这里是有效利用,而不是不能用多核。我们在开多线程的时候也是可以把cpu跑满的,但是是不是真的有效利用了呢?
姑且做一个实验。
import threading
from datetime import datetime as dt
def fnc():
#用上了昨天的那个小特性
a=0
while a<10000_0000:
a+=1
time_before=dt.now()
t1=threading.Thread(target=fnc)
t2=threading.Thread(target=fnc)
t1.start()
t1.join()
t2.start()
t2.join()
time_after=dt.now()
time=time_after-time_before
print(time.total_seconds())
这里我们定义了一个无聊函数,从0加到一亿(我发现用了下划线确实清晰不少....)
然后开两个线程,让线程一条一条的执行。
输出3次的时间。。
>>>
14.239966
>>>
13.286471
>>>
13.639575
大概是会花这么多时间,
然后我们让这两个线程同时跑
import threading
from datetime import datetime as dt
def fnc():
a=0
while a<10000_0000:
a+=1
time_before=dt.now()
t1=threading.Thread(target=fnc)
t2=threading.Thread(target=fnc)
t1.start()
t2.start()
t1.join()
t2.join()
time_after=dt.now()
time=time_after-time_before
print(time.total_seconds())
输出时间
>>>
13.664039
>>>
15.495306
>>>
14.705491
同时跑反而还慢一些,虽然实验并不严谨,但应该能让你多多少少体会到GIL的意思。
最后我试着直接call无聊函数2次
fnc()
fnc()
>>>
13.494611
好吧,跟顺序执行差不多..