Python中的threading

发布时间:2019-08-08 07:44:18编辑:auto阅读(1641)

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-


    import threading, time


    #新线程执行的代码:

    def loop():

        print('thread %s is running...' % threading.current_thread().name)

        n = 0

        while n < 5:

            n = n + 1

            print('thread %s ' % threading.current_thread().name)

            time.sleep(3)

        print('thread %s ended.' % threading.current_thread().name)


    print('thread %s is running...' % threading.current_thread().name)

    t = threading.Thread(target=loop, name='LoopThread')

    t.start()

    #t.join()

    print('thread %s ended.' % threading.current_thread().name)


    执行结果:

    thread MainThread is running...

    thread LoopThread is running...thread MainThread ended.


    thread LoopThread

    thread LoopThread

    thread LoopThread

    thread LoopThread

    thread LoopThread

    thread LoopThread ended.


    会在主线程中创建子线程,主线程和子线程并行运行


    #!/usr/bin/env python

    # -*- coding: utf-8 -*-


    import Queue 

    import time 

    import threading 

    import random 


    def go(name):

       # time.sleep(1)

        print("go" + str(name))

        time.sleep(1)


    for j in range(20):

        t1 = threading.Thread(group=None, target=go, name=None, args=(j,)) 

        t1.start()


    for i in range(20):

        go(i)


    j是并行执行,主线程和20个子线并行执行

    i是串行执行,只有主线程



    #!/usr/bin/env python

    # -*- coding: utf-8 -*-


    import Queue 

    import time 

    import threading 

    import random 



    q = Queue.Queue()


    def pro(name):

        print("---pro data kaiqi")

        #time.sleep(3)

        for i in range(20):

            time.sleep(1)

            print(name + "pro data" + str(i))

            q.put(i)


    def con(name):

        print("-----con data kaiqi")

        n = 0

        while n < 20:

            time.sleep(3)

            data = q.get()

            print(name + "con data----" + str(data))

            n += 1


    t1 = threading.Thread(group=None, target=pro, name=None, kwargs={'name':'laoban'}) 

    t2 = threading.Thread(group=None, target=con, name=None, kwargs={'name':'yuangong'})

    t1.start()

    t2.start()      


    两个线程并行交互,在一个队列中拿数据

关键字

上一篇: Parse Mail Header fo

下一篇: python_django urlpat