multiprocessing
python
其中经常使用到的几个功能linux
Process
用于定义进程windows
#定义进程有两种方式 from multiprocessing import Process #第一种方式定义个方法 def func(aaa): pritn(123) if __name__ == '__main__': process = Process(target=func,args=(123,)) #将target表现进程的任务名称 ,若是任务须要传参就加args 注意:传参必须是集合的形式即便参数只有一个 #第二种定义个类 class Proce(Process): #用类的方法继承Process def run(self): #run方法为任务执行的内容 print('1') if __name__ == '__main__': process = Proce() 若是任务须要传参, class Proce(Process): # 用类的方法继承Process def __init__(self,data): super().__init__() self.data = data def run(self): print(self.data) if __name__ == '__main__': process = Proce(1111)
Lock
:用于定义一个互斥锁多线程
active_children
:查看当前还在运行的自进程信息ide
cpu_count
:查看cpu进程ui
is_alive():返回进程是否在运行。线程
join([timeout]):阻塞当前上下文环境的进程程,直到调用此方法的进程终止或到达指定的timeout(可选参数)。code
start():进程准备就绪,等待CPU调度对象
run():strat()调用run方法,是主进程了运行了run而不是子进程继承
terminate():无论任务是否完成,当即中止工做进程
daemon:守护进程
exitcode(进程在运行时为None、若是为–N,表示被信号N结束)
name:进程名字。
pid:进程号。
使用了daemon
若是
实例化程序A.daemon = True 说明该进程守护主进程,当主进程结束了该子进程默认会跟着结束
若是不作处理deamon默认为False
在windows开启一个子进程他会把主程序自上而下从新运行一遍,因此咱们在windows中必须把和子程序相关的丢入main里面中
在linux中只是会记录主程序的自上而下运行后最后的运行状态,而不会从新运行一遍,因此在linux中也不须要丢入main
综上所述仍是将子进程丢入main里面运行更加合适
threading
其中经常使用到的几个功能
Thread
:建立线程,方法与进程相同
Lock
:互斥锁
lock = threading.Lock() 建立锁
lock.release()解锁
RLock
: 也是种互斥锁Lock容许在同一线程中被屡次acquire。而Lock却不容许这种状况
active_count
:存活的线程数量,返回的个数中包含主线程。
enumerate
:方法返回当前运行中的Thread对象列表
与进程类似
is_alive():返回进程是否在运行。
join([timeout]):阻塞当前上下文环境的线程,直到调用此方法的进程终止或到达指定的timeout(可选参数)。
start():进程准备就绪,等待CPU调度
run():strat()调用run方法,是主线程了运行了run而不是子进程
terminate():无论任务是否完成,当即中止工做线程
与进程类似
daemon:守护线程
is_alive:是否存活
name:进程名字。
idend:线程号。
与进程类似
没有区别,都与进程在linux运行的方式同样