此处的示例是对书籍《python并行编程》代码的改进,文档地址:https://python-parallel-programmning-cookbook.readthedocs.io/zh_CN/latest/chapter2/06_Thread_synchronization_with_Lock_and_Rlock.html
用threading模块来实现并行编程
import threading
import time
import random
def function(i):
num = random.randint(1,10)
time.sleep(num)
print("sleep: %s function called by thread %i \n" % (num, i))
return
threads = []
for i in range(1, 6):
t = threading.Thread(target=function, args=(i, ))
threads.append(t)
t.start()
for t in threads:
t.join()
运行结果:
文档中的代码存在问题,进行了2处修复,加入sleep, 修改join函数的调用位置。加入time.sleep的原因,只有在线程sleep或者线程执行时间到达了cpu的时间片之后,线程才会切换,如果不加time.sleep,线程的执行顺序和for循环的执行顺序一致