Txing

欢迎来到 | 伽蓝之堂

0%

python多线程与多进程简易实现

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