一: 进程的基本使用
- windows系统中开启进程必须在main里 不然会报错
import multiprocessing def task(args): print(args) if __name__ == '__main__': for i in range(10): p = multiprocessing.Process(target=task,args=(i,)) p.start()
二: 进程间数据不共享
- 进程
import multiprocessing data_list=[] def task(args): data_list.append(args) print(data_list) if __name__ == '__main__': for i in range(10): p = multiprocessing.Process(target=task,args=(i,)) p.start() [0] [1] [3] [2] [4] [5] [6] [7] [8] [9]
- 线程
import multiprocessing import threading data_list=[] def task(args): data_list.append(args) print(data_list) if __name__ == '__main__': for i in range(10): p = threading.Thread(target=task,args=(i,)) p.start() [0] [0, 1] [0, 1, 2] [0, 1, 2, 3] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4, 5] [0, 1, 2, 3, 4, 5, 6] [0, 1, 2, 3, 4, 5, 6, 7] [0, 1, 2, 3, 4, 5, 6, 7, 8] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
三: 常用方法
- join等待
- daemon
- name
import multiprocessing def task(args): p = multiprocessing.current_process() print(p.name,p.ident) # ident/pid if __name__ == '__main__': for i in range(10): p = multiprocessing.Process(target=task,args=(i,)) p.name = str(i) p.start()
四: 面向对象的方式创建进程
import multiprocessing class MyProcess(multiprocessing.Process): def run(self): print(multiprocessing.current_process()) def run(): p1 = MyProcess() p1.start() if __name__ == '__main__': run()