Python多线程与多进程简易实现
1 问题背景
近期需要提升代码运行效率,想通过多线程或多进程实现。
一般来说,单进程程序运行起来会作为一个进程占用CPU资源,而一个进程可以包含1或多个线程。在多CPU核的机器上,线程之间可以并行执行,通过该方式可以提高代码运行效率。
最后,通过本次优化调用48个核,成功把代码运行效率提升了10倍,效果显著
NOTE:Python虽然可以通过threading库实现多线程,但由于全局解释器锁(GIL)的存在,一个时刻只能有1个线程执行,并不是真正的多线程;在一些情况下,例如跑不满一个核,由于线程之间还有通信成本,多线程python程序时间效率上并不一定优于单线程python程序;
2 实现方法
2.1 Python 多线程实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import threading
def fun(name,ind): print(name,ind)
if __name__ == '__main__': process_list = []
for i in range(5): p = threading.Thread(target=fun,args=(i,1)) p.start() process_list.append(p)
for i in process_list: p.join()
print("Finish")
|
2.2 Python 多进程实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| from multiprocessing import Process
def fun(name,ind): print(name,ind)
if __name__ == '__main__': process_list = []
for i in range(5): p = Process(target=fun,args=(i,1)) p.start() process_list.append(p)
for i in process_list: p.join()
print("Finish")
|
2023年03月09日
PCon