Python多线程

对于python 多线程的理解,摸索了一天半 令我真的头秃

from time import  sleep,ctime
import logging
import  threading # 首先导入threading 模块,这是使用多线程的前提。

logging.basicConfig(level=logging.INFO)

loops = [2,4]
def loop(nloop,nsec):
    logging.info("start loop"+str(nloop)+ctime())
    sleep(nsec)
    logging.info("end loop"+str(nloop) + ctime())

def main():
    logging.info("start all at" + ctime())
    thread = []
    nloops = range(len(loops))
    for i in nloops:
        t = threading.Thread(target=loop,args=(i,loops[i]))
        thread.append(t)
    """
        这里第一个循环的意思
        创建了thread数组,创建线程t,使用threading.Thread()方法,
        在这个方法中调用loop方法target=loop,args方法对loop方法进行传参。 把创建好的线程t装到threads数组中。
        start nloop0  nloop1 一起运行
        nloop0 间隔2s  nloop1  间隔了4秒
    """
    for i in nloops:
        thread[i].start()  # 开始2个线程活动。
    for i in nloops:
        thread[i].join()  # 用于等待线程终止。join()的作用是,在子线程完成运行之前,这个子线程的父线程将一直被阻塞。
    logging.info("end all at " + ctime())

if __name__ == '__main__':
    main()

第二个示例

from time import sleep, ctime
import threading

def music(name):
    for i in range(2):
        print("I listen now", name, ctime())
        sleep(3)


def move(name):
    for i in range(2):
        print("I listen now", name, ctime())
        sleep(2)


threds = []
t1 = threading.Thread(target=music, args=("凤凰传奇",))
threds.append(t1)
t2 = threading.Thread(target=move, args=("阿凡达",))
threds.append(t2)

if __name__ == '__main__':
    print("The main process starts", ctime())
    for i in threds:
        i.setDaemon(True)
        i.start()
    i.join()
    print("The main process ends", ctime())
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。