• python多线程实现


    '''
    文件夹命名不能用官方已有的模块名比如threading.py test.py等等都会报错!!!
    '''
    
    
    from multiprocessing import Process
    import os
    
    # 子进程要执行的代码
    def run_proc(name):
        print('Run child process %s (%s)...' % (name, os.getpid()))
    
    #一个进程的创建(内存映射)无非是 算法(参数1:func)+数据(参数2:函数入参)
    if __name__=='__main__':#程序入口开始执行就产生了主进程,如果不引入多进程创建子进程,整个程序执行过程只有在执行入口产生的1个父进程
        print('Parent process %s.' % os.getpid())#用来获取主进程的进程ID:266528
        #可以看出父进程是持续到程序结束的
        p = Process(target=run_proc, args=('test',))#实例化进程p,调用run_proc函数,传入参数对象args,开辟了子进程
        print('Child process will start.')#ID:266540,而子进程在程序执行过程中经历了创建和销毁.
        p.start()#进程准备就绪,进程在此行之后就自动开始执行了
        print("-------------")
        p.join()#等待进程p运行结束!!!(进程同步)
        #注释掉p.join(),可能会出现进程p没有运行完毕,然后父进程266528继续运行了.会出现先print出"Child process end",然后子进程才执行出 print  "Run child process %s (%s)..."
        print('Child process end.')
        print('Parent process %s.' % os.getpid())#ID:266528
    
    
    from multiprocessing import Process
    import random,time
    
    def do_task(task):
        print('我正在做{}'.format(task))
        #time.sleep(random.randint(1,3))
    
    def write_task(task):
        print('我正在写{}'.format(task))
        #time.sleep(random.randint(1,3))
    
    if __name__ == "__main__":
        p1 = Process(target=do_task,args=('PPT',))
        p2 = Process(target=write_task,args=('Sql',))
        p1.start()
        p2.start()
    
    
    import multiprocessing
    import random,time,os
    
    def do_task(task):
        print('我正在做{}'.format(task))
        #print(os.getpid())
        time.sleep(random.randint(1,3))
    
    def write_task(task):
        print('我正在写{}'.format(task))
        #print(os.getpid())
        time.sleep(random.randint(1,3))
    
    if __name__ == "__main__":
        func_list=[do_task,write_task]
        args_list=["PPT","Sql"]#如果是单个子进程的创建,函数的传参只接受元组(a,)形式
        pool=multiprocessing.Pool(2)
    
        for func,arg in func_list,args_list:
                pool.apply_async(func,arg)
        print('Waiting for all subprocesses done...')
        pool.close()
        pool.join()    #调用join之前,一定要先调用close() 函数,否则会出错
        print('All subprocesses done')
    
    
    
    import time, random
    from threading import Thread
    #threading.py--模块
    #class func----Thread
    
    def do_chioce(task):
        print('我正在{}'.format(task))
        time.sleep(random.randint(1,3))
    
    if __name__ == "__main__":
        t = Thread(target=do_chioce,args=('选PPT模板',))#Thread类
        t.start()
    
  • 相关阅读:
    17、静态链表
    16、约瑟夫问题
    15、循环链表
    9、插入排序
    14、企业链表
    13、单向链表
    12、顺序表的顺序存储结构
    11、归并排序
    10、快速排序
    原型模式
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/13755784.html
Copyright © 2020-2023  润新知