一,线程与进程的区别
纲领:进程是资源分配的最小单位,线程是CPU调度的最小单位
听老师傅说,在python上线程作用不大,最好还是使用多进程。
二,简单使用multiprocessing
检测一下电脑性能如何:
import multiprocessing
print('子进程的列表:{}'.format(multiprocessing.active_children()))
print('电脑的CPU数量:{}'.format(multiprocessing.cpu_count()))
print('现在运行的进程:{}'.format(multiprocessing.current_process()))
简单使用一下多进程:
from multiprocessing import Process
def fun(arg):
print('hellow world:', arg)
if __name__ == '__main__':
# 通过对Process类进行实例化创建一个子进程
p = Process(target=fun1, args=("balala",))
p.start()# 进程开始
p.join() # 进程等待p停止,才执行下一行代码
print('end')
三,多次调用一个函数
from multiprocessing import Process
def fun(arg):
print('hellow world:', arg)
if __name__ == '__main__':
# 通过对Process类进行实例化创建一个子进程
pros = []
for i in range(4):
p = Process(target=fun1, args=("balala",))
p.start()# 进程开始
pros.append(p)
for pro in pros:
pro.join() # 进程等待p停止,才执行下一行代码
print('end')
四,多进程共享字典
from multiprocessing import Process, Manager
def fun(arg):
print('hellow world:', arg)
ans[arg] = arg
if __name__ == '__main__':
# 通过对Process类进行实例化创建一个子进程
pros = []
ans = Manager().dict()
for i in range(4):
p = Process(target=fun1, args=("balala",))
p.start()# 进程开始
pros.append(p)
for pro in pros:
pro.join() # 进程等待p停止,才执行下一行代码
print('end')
print(ans)
应该不会报错吧?!?