Python第四周之多线程和多进程
# 多线程和多进程
进程:操作系统分配内存的基本单位,进程之间的通信相互隔离,如果要相互交换数据,需要特殊的机制。
线程:一个进程由至少一个线程组成,线程是进程的执行单元,也是操作系统分配CPU的基本单元。
多线程,是为了多的被CPU所启动。
优点:
1.缩短程序的执行时间,提升性能
2.改善用户的体验。
进程
调用方法一: 直接调用 。
直接创建对象Process,并通过target参数指定线程启动后要执行的任务
from multiprocessing import Process
count = 0
def running(string):
global count
inner = 0
while count < 100:
print(string, end='', flush=True)
count += 1
inner += 1
print('%s打印了%s次' % (string, inner))
def main():
t1 = Process(target=running, args=('🙂',)) # 注意,这里target 后面跟的函数,没有括号,args= 后面跟的是元组,传入参数
t1.start()
t2 = Process(target=running, args=('哼',))
t2.start()
if __name__ == '__main__':
main()
调用方法二: 定义类来调用 -- 间接(推荐)
继承Process自定义进程,通过重写run 方法来指定线程启动后执行的任务
from multiprocessing import Process class Patten(Process): def __init__(self, string, count): self._string = string self._count = count super(Patten, self).__init__() @property def count(self): return self._count def run(self): for _ in range(self._count): print(self._string, end='', flush=True) def main(): patten1 = Patten('👌', 10000) patten2 = Patten('😵', 10000) patten1.start()
patten1.join()
patten2.start()
patten2.join() total = patten.count + patten2.countprint(total) if __name__ == '__main__': main()
线程
使用方法同进程,只需要把对象换位Thread 就行。和进程的区别如下:
进程是单独执行,数据不共享,线程是数据共享执行。