Python-Threading学习

使用多线程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import threading
import threading
import time
import numpy as np


def f(x, y):
time.sleep(np.random.randint(low=0, high=5))
print(x*y)


data = np.arange(start=0, stop=5)
for i in range(len(data)):
th = threading.Thread(target=f, args=(data[i], data[i]))
th.start()

结果:

1
2
3
4
5
0
1
9
4
16

线程同步

在线程当中,有的时候会用到等待,比如要算s = a^2,a是另外线程来算,所以s要等a算好了才能开始算。可以用python中的threading.Event(),有以下几个方法:

1
2
3
4
5
6
7
8
9
10
11
import threading
event = threading.Event()

# 等待当前线程 ready
event.wait()
# 设置当前线程为 ready 状态
event.set()
# 清空当前 ready 状态
event.clear()
# 查看当前线程状态是否 ready
event.isSet()
Thanks for rewarding