Python实现多线程和多进程
基本使用方法
第一种方法
1 2 3 4 5 6 7 8 9 10 11 12 13
|
from threading import Thread def func(): for i in range(1000): print("func", i)
if __name__ == '__main__': t = Thread(target=func) t.start() for i in range(1000): print("main", i)
|
首先导入Thread类
创建Thread对象t
t.start()
相当于开辟一个新的流水线,然后告诉员工可以开始干活了,但是员工什么时候干活得看CPU的安排
第二种方法
1 2 3 4 5 6 7 8 9 10 11
| class MyThread(Thread): def run(self): for i in range(1000): print("子线程", i)
if __name__ == '__main__': t = MyThread() t.start() for i in range(1000): print("主线程", i)
|
定义一个类,继承Thread类,然后重写run方法
不能直接调用run方法,通过调用start方法来实现多线程
给线程传递参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
from threading import Thread def func(name): for i in range(1000): print(name, i)
if __name__ == '__main__': t1 = Thread(target=func, args=("周杰伦",)) t1.start() t2 = Thread(target=func, args=("王力宏",)) t2.start()
|
使用 args = () 传递参数,args 必须是一个元组,不能是一个字符串,所以“周杰伦”后面要加个逗号
使用多进程的例子
1 2 3 4 5 6 7 8 9 10 11
| from multiprocessing import Process
def func(): for i in range(1000): print("子进程", i)
if __name__ == "__main__": p = Process(target=func()) p.start() for i in range(1000): print("主进程", i)
|
尽管开辟线程和进程有很大的不同,但是在使用的时候非常相似。