>进程
>>进程介绍
进程是程序各种资源管理的集合
>>multipprocessing模块
# Process类
# 创建进程的类
'''
# 常用属性和方法
pid 获取进程的ID
name 获取进程的名称
Process([group [, target [, name [, args [, kwargs]]]]])
'''
# 创建一个执行进程 参数定义如下 :target表示调用对象,args表示调用对象的位置参数元组。
# kwargs表示调用对象的字典。name为别名。group实质上不使用
import multiprocessing
from time import sleep
'''
方法:is_alive()、join([timeout])、run()、start()、terminate()。其中,Process.tart()启动某个进程。
属性:authkey、daemon(要通过start()设置)、exitcode(进程在运行时为None、如果为–N,表示被信号N结束)、
name、pid。其中daemon是父进程终止后自动终止,且自己不能产生新进程,必须在start()之前设置。
'''
# 创建多进程 获取进程id 进程名称
# current_process().pid current_process().name
def worker_1():
for i in range(10):
print('进程id%s,进程名称%s' %
(multiprocessing.current_process().pid,multiprocessing.current_process().name))
sleep(1)
def worker_2():
for i in range(10):
print('进程id%s,进程名称%s' %
(multiprocessing.current_process().pid, multiprocessing.current_process().name))
sleep(1)
def main():
process_1=multiprocessing.Process(target=worker_1)
process_2 = multiprocessing.Process(target=worker_2)
process_1.start()
process_2.start()
if __name__ == '__main__':
main()
# 将进程定义为类
import multiprocessing
import time
class MyProcess(multiprocessing.Process):
def __init__(self, interval):
multiprocessing.Process.__init__(self)
self.interval = interval
def run(self):
n = 5
while n > 0:
print("the time is {0}".format(time.ctime()))
time.sleep(self.interval)
n -= 1
if __name__ == '__main__':
p = MyProcess(3)
p.start()
# 进程类控制方法
# terminate() 进程中断执行
# join() 进程强制执行
# is_alive()判断进程是否还存活
import multiprocessing
import time
def work(count, t):
for i in range(count):
print('this time is %s' % time.ctime())
time.sleep(t)
def work2(count, t):
for i in range(count):
print('this time is %s' % time.ctime())
time.sleep(t)
def main():
p1 = multiprocessing.Process(target=work, args=(5, 2))
p2 = multiprocessing.Process(target=work2, args=(3, 1))
p1.start()
if p1.is_alive():
p1.terminate()
print('p1被中段')
else:
pass
if not p2.is_alive():
p2.start()
p2.join()
print('p2被强制执行')
if __name__ == '__main__':
main()
# 守护进程
import multiprocessing
import time
def work(count, t):
for i in range(count):
p2 = multiprocessing.Process(target=work2, args=(1,))
p2.start()
print('this time is %s' % time.ctime())
time.sleep(t)
def work2(t):
print('守护进程的'+'this time is %s' % time.ctime())
time.sleep(t)
def main():
p1 = multiprocessing.Process(target=work, args=(5, 2))
p1.start()
if __name__ == '__main__':
main()