every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog
0. Preface
Python multithreaded recording
Explanation: Due to the existence of GIL lock, it is not multi-threaded in the true sense
1. Text
1.1 Using multithreading for functions
from threading import Thread
from time import sleep, ctime
def func(name, sec):
print('---开始---', name, '时间', ctime())
sleep(sec)
print('***结束***', name, '时间', ctime())
# 创建 Thread 实例
t1 = Thread(target=func, args=('第一个线程', 1))
t2 = Thread(target=func, args=('第二个线程', 2))
# 启动线程运行
t1.start()
t2.start()
# 等待所有线程执行完毕
t1.join() # join() 等待线程终止,要不然一直挂起
t2.join()
1.2 Using multithreading with classes
from threading import Thread
from time import sleep, ctime
class MyClass(object):
def func(self,name,sec):
print('---开始---', name, '时间', ctime())
sleep(sec)
print('***结束***', name, '时间', ctime())
def main():
# 创建 Thread 实例
t1 = Thread(target=MyClass().func, args=(1, 1))
t2 = Thread(target=MyClass().func, args=(2, 2))
# 启动线程运行
t1.start()
t2.start()
# 等待所有线程执行完毕
t1.join() # join() 等待线程终止,要不然一直挂起
t2.join()
if __name__=="__main__":
main()
1.3 Inherited way to use multithreading
Description:
Rewrite the run method in the Thread class, write the code you need to execute in it, and then use the start() method to call run
from threading import Thread
from time import sleep, ctime
# 创建 Thread 的子类
class MyThread(Thread):
def __init__(self, func, args):
'''
:param func: 可调用的对象
:param args: 可调用对象的参数
'''
Thread.__init__(self)
self.func = func
self.args = args
self.result = None
def run(self):
self.result = self.func(*self.args)
def getResult(self):
return self.result
def func(name, sec):
print('---开始---', name, '时间', ctime())
sleep(sec)
print('***结束***', name, '时间', ctime())
return sec
def main():
# 创建 Thread 实例
t1 = MyThread(func, (1, 1))
t2 = MyThread(func, (2, 2))
# 启动线程运行
t1.start()
t2.start()
# 等待所有线程执行完毕
t1.join()
t2.join()
# 或线程中程序的运行结果
print(t1.getResult())
print(t2.getResult())
if __name__ == '__main__':
main()
reference
[1] https://zhuanlan.zhihu.com/p/91601448
[2] https://zhuanlan.zhihu.com/p/106905974