**
查看如何使用Process这个类创建进程
**
Process([group [, target [, name [, args[, kwargs] ] ] ] ] )
参数注释:
group | 参数未启用,一般为None |
---|---|
target | 进程调用时执行的可调用对象 |
name | 进程指定描述性名称的字符串 |
args | 传递的是一个位置参数元组 |
kwargs | 传递的是一个位置参数字典 |
创建进程的第一种方法:
from multiprocessing import Process
import time
import os
def clock(interval):
while True:
print("现在时间是%s,该进程id是%d" % (time.ctime(), os.getpid()))
time.sleep(interval)
if __name__ == '__main__':
p = Process(target=clock, args=(2,))
p.start()
运行结果
现在时间是Wed Jul 10 14:29:26 2019,该进程id是8664
现在时间是Wed Jul 10 14:29:28 2019,该进程id是8664
现在时间是Wed Jul 10 14:29:30 2019,该进程id是8664
现在时间是Wed Jul 10 14:29:32 2019,该进程id是8664
#程序每隔两秒一直运行下去,直到耗尽内存
第二种方法是重写run方法
from multiprocessing import Process
import time
import os
class ClockProcess(Process):
def __init__(self, interval):
Process.__init__(self)
self.interval = interval
def run(self): #这个规定写法
while True:
print("现在时间是%s,该进程id是%d" % (time.ctime(), os.getpid()))
time.sleep(self.interval)
if __name__ == '__main__':
p = ClockProcess(1)
p.start()
print(p.pid)
#运行结果一样,只不过进程ID变了
Process的实例方法参考:
p.is_alive() | p进程在运行则返回True |
---|---|
p.join() | 等待进程结束 |
p.start() | 启动进程,这将运行进程的子进程,并调用该子进程的run()方法 |
p.run() | 进程启动时调用的run方法,继承自Process类 |
p.terminate() | 强制终止进程,调用此函数,进程p将会被立即终止 ,同时不会有清理的动作,如果进程p有自己的子进程,则全部变为僵尸进程 |
p.authkey | 进程的身份验证 |
p.daemon | 该函数必须在start()之前使用,一个布尔标志,指示进程是否为后台进程,当创建的进程被终止,则后台进程将自动终止 |
p.name | 进程名称 |
p.pid | 进程的整数进程ID |