基礎知識:http://www.javashuo.com/article/p-ecqfkznl-c.htmlhtml
python3.7默認解釋器(cpython)
cpu爲四核
#! /usr/bin/python import time from threading import Thread from multiprocessing import Process CPU_NUM = 4 def my_counter(): i = 0 for _ in range(100000000): i = i + 1 return True def test_for_serial(): '''線程依次執行測試''' start_time = time.time() for tid in range(CPU_NUM): t = Thread(target=my_counter) t.start() t.join() end_time = time.time() print("線程依次執行耗時: {}".format(end_time - start_time)) def test_for_concurrent(): '''線程同時執行測試''' ts = [] start_time = time.time() for tid in range(CPU_NUM): t = Thread(target=my_counter) t.start() ts.append(t) for t in ts: t.join() end_time = time.time() print("線程同時執行耗時: {}".format(end_time - start_time)) def test_for_process(base=1): '''進程同時執行''' ts = [] start_time = time.time() for tid in range(CPU_NUM * base): t = Process(target=my_counter) t.start() ts.append(t) for t in ts: t.join() end_time = time.time() print("進程同時執行耗時: {}".format(end_time - start_time)) if __name__ == '__main__': test_for_serial() test_for_concurrent() test_for_process(1)
1. 多線程能避開GIL鎖
2. 多線程同時執行跟多線程依次執行耗時相差不大,應該是python3.7有改進鎖釋放提升效率了。別人博客看到py2.7下相差會有百分之三四十,我這邊測了幾次都是差很少