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 就行。和进程的区别如下:

  进程是单独执行,数据不共享,线程是数据共享执行。

 

posted @ 2018-03-20 18:56  摇还是不摇  阅读(129)  评论(0编辑  收藏  举报