import time
def work_a(a): #GIL锁
for var in range(1000000):
a[0] += 1
#a = [5]
def work_b(a):
for var in range(1000000):
a[0] += 1
def work_c(a):
for var in range(1000000):
a[0] += 1
a = [1]
start = time.time()
work_a(a)
print('------')
work_b(a)
print('------')
work_c(a)
print('------')
end = time.time()
print('程序耗时:%.2f' % (end - start))
实例
from multiprocessing import Process
from threading import Thread
import time
def work_a(a):
for var in range(2500000):
a[0] += 1
print('a线程结束')
def work_b(a):
for var in range(2500000):
a[0] += 1
print('b线程结束')
def work_c(a):
for var in range(2500000):
a[0] += 1
print('c线程结束')
def work_d(a):
for var in range(2500000):
a[0] += 1
print('d线程结束')
def main():
a = [1]
ta = Thread(target=work_a,args=(a,))
tb = Thread(target=work_b,args=(a,))
tc = Thread(target=work_c,args=(a,))
td = Thread(target=work_d,args=(a,))
pa = Process(target=work_a,args=(a,))
pb = Process(target=work_b,args=(a,))
pc = Process(target=work_c,args=(a,))
pd = Process(target=work_d,args=(a,))
start = time.time()
ta.start()
tb.start()
tc.start()
td.start()
td.join()
tc.join()
tb.join()
ta.join()
end = time.time()
print('多线程程序耗时:%.2fs' % (end - start))
start = time.time()
work_a(a)
work_b(a)
work_c(a) #0.76
work_d(a)
end = time.time()
print('单进程程序耗时:%.2fs' % (end - start))
start = time.time()
pa.start()
pb.start()
pc.start()
pd.start()
pd.join()
pc.join()
pb.join()
pa.join()
end = time.time()
print('多进程程序耗时:%.2fs' % (end - start))
if __name__ == '__main__':
main()
线程的创建–多线程运行耗时
from threading import Thread
import time
#进程处理并发: 时间要少于单进程
#线程处理:等于,大于单进程
#同步: 0 - 8000
#异步: 0 2000 1
def work_a(a): #GIL锁
for var in range(1000000):
a[0] += 1
#a = [5]
print('a线程结束')
def work_b(a):
for var in range(1000000):
a[0] += 1
print('b线程结束')
def work_c(a):
for var in range(1000000):
a[0] += 1
print('c线程结束')
def main():
a = [1]
start = time.time()
ta = Thread(target=work_a,args=(a,))
tb = Thread(target=work_b,args=(a,))
tc = Thread(target=work_c,args=(a,))
ta.start()
tb.start()
tc.start()
ta.join()
tb.join()
tc.join()
end = time.time()
print('程序耗时:%.2f' % (end - start))
#0.9 1.83
if __name__ == '__main__':
main()
线程内存共享
from threading import Thread
import time
#GUI编程 QQ
def work(a):
a[0] = 'a'
def main():
a = [1]
t = Thread(target=work,args=(a,))
t.start()
t.join()
print(a) #最后结果
if __name__ == '__main__':
main()