'''
文件夹命名不能用官方已有的模块名比如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()