python-threading学习(一)

今天开始准备学习threading这个库啦,毕竟面试的时候少不了问多进程,多线程的,所以还是要准备准备的,嘻嘻。


今天理解最基本的线程运行和join的使用

我就直接贴代码了,跑下代码,看下注释就明白了。

import threading
import time


def music(func):
    for i in range(2):
        sleep_seconds = 4
        print(f"Begin listen to {func, time.ctime()}")
        time.sleep(sleep_seconds)
        print(f"过了{sleep_seconds}s")
        print(f"end listening at the music: {func, time.ctime()} ")


def movie(func):
    for i in range(2):
        sleep_seconds = 5
        print(f"begin watching at the{func, time.ctime()} ")
        time.sleep(sleep_seconds)
        print(f'过了{sleep_seconds}s')
        print(f"end watching at the movie: {func, time.ctime()}")


if __name__ == '__main__':
    threads = []
    t1 = threading.Thread(target=music, args=['七里香', ])
    t2 = threading.Thread(target=movie, args=['阿甘正传', ])
    threads.append(t1)
    threads.append(t2)
    print("对于join的理解,三个小例子")
    """
        第一种情况
    """
    # print("下面是三个小例子,方便理解")
    # print("第一种:循环中按顺序执行,启动music线程,然后阻塞,然后启动movie线程,在阻塞,最后在结束主进程")
    # for t in threads:
    #    t.start()
    #    t.join()
    # print(f"all over {time.ctime()}")
    # print("最终结果就是,必须等到music放完了才会看moive,然后回到主进程")
    """
        第二种
    """
    # print("第二种: 循环中启动两个线程,然后阻塞music线程,意思是必须等music线程结束后才会执行主进程。")
    # print("你可以看到当music执行完成后,all over被打印了出来")
    # for t in threads:
    #    t.start()
    # t1.join()
    # print(f"all over {time.ctime()}")
    """
        第三种
    """
    print("第三种:跟第二种一样,阻塞movie进程,必须等到movie放完了,才会执行主进程")
    for t in threads:
        t.start()
    t2.join()
    print(f"all over {time.ctime()}")

发现不错的文章


python——threading模块


明天


  • 理解python中的全局解释锁。
  • 测测python中io密集型和计算机密集型多线程的差异。

你可能感兴趣的:(python-threading学习(一))