Python之多进程与多线程

实现python说话的多历程与多线程

东西/原料

  • 电脑
  • Python运行情况

方式/步调

  1. 1

    对比单历程、多历程、多线程的利用案例。

  2. 2

    一、先实现单历程的案例:

    1、导入threading和time库;

    如:

    from time import ctime,sleep

    import threading

  3. 3

    2、界说两个函数:

    如:

    def talk(content,loop):

        for i in range(loop):

            print("Start talk %s %r" %(content,ctime()))

            sleep(2)

    def write(content,loop):

        for i in range(loop):

            print("Start write %s %r" %(content,ctime()))

            sleep(6)

  4. 4

    3、运行本家儿函数:

    if __name__=='__main__':

    talk("Hello world",3)

    write("Bye Bye",3)

    print("All end 2222:%r" %ctime())

  5. 5

    4、全数代码为:

    from time import ctime,sleep

    import threading

    def talk(content,loop):

        for i in range(loop):

            print("Start talk %s %r" %(content,ctime()))

            sleep(2)

    def write(content,loop):

        for i in range(loop):

            print("Start write %s %r" %(content,ctime()))

            sleep(6)

        

    if __name__=='__main__':

    talk("Hello world",3)

    write("Bye Bye",3)

    print("All end 2222:%r" %ctime())

  6. 6

    5、运行成果如下图所示:

  7. 7

    二、接下来,编写多历程的案例:

    6、函数同单历程中的函数,此中需要界说历程对象;

    如:

    threads=[]

    t1=threading.Thread(target=talk,args=('Hello world',3))

    threads.append(t1)

    t2=threading.Thread(target=write,args=('Bye Bye',3))

    threads.append(t2)

  8. 8

    7、运行本家儿函数:

    if __name__=='__main__':

        for t in threads:

            t.start()

        for t in threads:       

            t.join()

        print("All end 2222:%r" %ctime())

  9. 9

    8、全数代码为:

    from time import ctime,sleep

    import threading

    def talk(content,loop):

        for i in range(loop):

            print("Start talk %s %r" %(content,ctime()))

            sleep(2)

    def write(content,loop):

        for i in range(loop):

            print("Start write %s %r" %(content,ctime()))

            sleep(6)

    threads=[]

    t1=threading.Thread(target=talk,args=('Hello world',3))

    threads.append(t1)

    t2=threading.Thread(target=write,args=('Bye Bye',3))

    threads.append(t2)

        

    if __name__=='__main__':

        for t in threads:

            t.start()

        for t in threads:       

            t.join()

        print("All end 2222:%r" %ctime())  

    如下图所示:

  10. 10

    9、运行代码,成果如下图所示:

  11. 11

    三、接下来,编写多线程的案例:

    10、函数同单历程中的函数,此中需要界说历程对象;

    如:

    processes=[]

    p1 = multiprocessing.Process(target=talk, args=('Hello world',3))

    processes.append(p1)

    p2=multiprocessing.Process(target=write,args=('Bye',3))

    processes.append(p2)

  12. 12

    11、界说本家儿函数为:

     for p in processes:

            p.start()

        for p in processes:

            p.join()

        print("All Processes are Run %s" %ctime())

  13. 13

    12、全数代码为:

    from time import ctime,sleep

    import multiprocessing

    import threading

    def talk(content,loop):

        for i in range(loop):

            print("Start talk %s %r" %(content,ctime()))

            sleep(2)

    def write(content,loop):

        for i in range(loop):

            print("Start write %s %r" %(content,ctime()))

            sleep(6)

       

    processes=[]

    p1 = multiprocessing.Process(target=talk, args=('Hello world',3))

    processes.append(p1)

    p2=multiprocessing.Process(target=write,args=('Bye',3))

    processes.append(p2)

        

    if __name__=='__main__':

        for p in processes:

            p.start()

        for p in processes:

            p.join()

        print("All Processes are Run %s" %ctime())

  14. 14

    13、运行成果如下图所示:

  15. 15

    综上所述,单历程、多历程、多线程的执行成果,本家儿如果表现在执行的时候点的差别。

注重事项

  • 为了领会清晰多历程和单历程之间的差别,sleep和运行次数需要设定精确
  • 注重多历程和多线程的成立体例
  • 发表于 2018-06-27 00:00
  • 阅读 ( 198 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论