47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| This code is supported by the website: https://www.guanjihuan.com
 | |
| The newest version of this code is on the web page: https://www.guanjihuan.com/archives/4536
 | |
| """
 | |
| 
 | |
| from multiprocessing import Process
 | |
| import os
 | |
| import time
 | |
| 
 | |
| def run_proc(name): # 要执行的代码
 | |
|     start_time = time.perf_counter()
 | |
|     time.sleep(2)
 | |
|     end_time = time.perf_counter()
 | |
|     print ('Process id running on %s = %s' % (name, os.getpid()), '; running time = %s' % (end_time-start_time))
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
| 
 | |
|     # 串行
 | |
|     print('串行程序')
 | |
|     print('Process id = %s.' % os.getpid())
 | |
|     start_time = time.perf_counter()
 | |
|     run_proc('job1')
 | |
|     run_proc('job2')
 | |
|     run_proc('job3')
 | |
|     run_proc('job4')
 | |
|     end_time = time.perf_counter()
 | |
|     print('CPU执行时间(s)=', (end_time-start_time), '\n')
 | |
| 
 | |
|     # 并行
 | |
|     print('并行程序')
 | |
|     print('Process id = %s.' % os.getpid())
 | |
|     start_time = time.perf_counter()
 | |
|     p1 = Process(target=run_proc, args=('job1',))
 | |
|     p2 = Process(target=run_proc, args=('job2',))
 | |
|     p3 = Process(target=run_proc, args=('job3',))
 | |
|     p4 = Process(target=run_proc, args=('job4',))
 | |
|     p1.start()
 | |
|     p2.start()
 | |
|     p3.start()
 | |
|     p4.start()
 | |
|     p1.join()  # join()方法可以等待子进程结束后再继续往下运行
 | |
|     p2.join()  
 | |
|     p3.join()  
 | |
|     p4.join()
 | |
|     end_time = time.perf_counter()
 | |
|     print('运行时间(s)=', (end_time-start_time)) |