线程与进程的其他相关操作
import threading # 线程 import multiprocessing # 进程 import socket import time def wo(): global a time.sleep(5) a = 5 if __name__ == '__main__': # 在 win 系统下 p = multiprocessing.Process(target=wo) # 生成进程 print(p) # 对象 名字 <Process(Process-1, initial)> p1 = multiprocessing.Process(target=wo, name='对象名字') # <Process(对象名字, initial)> p1.name = '改名字' # 可以改个名字 <Process(改名字, initial)> print(p1) # 对象 名字 # <Process(Process-1, initial)> # 可以指定名字 # p = threading.Thread(target=wo) # 生成线程 # print('a:',p.pid) # 进程还没运行 : a: None print('a:',p.ident) # 线程还没运行 a: None p.start() # 运行之后: # print('a:', p.pid) # a: 12248 是进程 PID print('a:', p.ident) # a: 24416 是线程 ident # 在进程里 pid 是 ident, 在线程中没有 pid,只有 ident # 线程与进程操作类似
import threading # 线程 import multiprocessing # 进程 import socket import time def wo(): global a a = 5 time.sleep(15) print('子进程结束') if __name__ == '__main__': # 在 win 系统下 p = multiprocessing.Process(target=wo) p.start() time.sleep(2) p.join() # 主进程将停在这等待子进程 , p.terminate() # 主进程结束后,子进程立马关闭,未完成任务不再运行, # 但是线程没有这个方法,不能中途停止,只能等到他任务完成, print('主进程结束')
进程的生存状态
# -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2018/7/18 0018 0:13 import threading # 线程 import multiprocessing # 进程 import socket import time def wo(): global a a = 5 time.sleep(15) if __name__ == '__main__': # 在 win 系统下 p = multiprocessing.Process(target=wo) print(p) # initial 对象生成后的初始化,<Process(Process-1, initial)> p.start() print(p) # started 运行状态 <Process(Process-1, started)> print(p.is_alive()) # 只有在运行中时才返回 True, p.join() # 等待任务完毕 print(p) # stopped 进程结束 <Process(Process-1, stopped)>
线程与进程一样的操作,
守护进程
import threading # 线程 import multiprocessing # 进程 import socket import time def wo(): print('a') time.sleep(6) print('b') if __name__ == '__main__': # 在 win 系统下 p = multiprocessing.Process(target=wo,daemon=True) p1 = multiprocessing.Process(target=wo) p1.daemon = True # daemon=True 时,这个进程成为一个守护进程, # 只要运行完代码,直接关闭所有, p.start() print('c')
是为了程序完毕后释放被占到用的资源,( join() daemon)
用面向对象的方式来使用进程和线程,
import threading # 线程 import multiprocessing # 进程 import socket import time class MyProcess(multiprocessing.Process): '''继承 multiprocessing.Process 这个类''' def __init__(self): # 重写 init 方法 # def __init__(self,name): # 重写 init 方法 super().__init__() # 调用父类方法 # super().__init__(name = name,daemon = True,) # 可以在这里设置参数 , def run(self): # 重写 run 方法 print(time.time()) time.sleep(3) print(time.time()) if __name__ == '__main__': # 在 win 系统下 p = MyProcess() # p = MyProcess('abc') # 传参 p.start() # 启动时会自动调用 run 方法
线程与进程一样操作,