线程与进程的其他相关操作

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 方法

  

  线程与进程一样操作,

潭州课堂25班:Ph201805201 并发(进程,线程)二 第十二课 (课堂笔记的更多相关文章

  1. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第四课 登录注册 (课堂笔记)

    index.html 首页 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  2. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第三课 (课堂笔记)

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  3. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第二课 (课堂笔记)

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  4. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第一课 (课堂笔记)

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  5. 潭州课堂25班:Ph201805201 第十课 类的定义,属性和方法 (课堂笔记)

    类的定义 共同属性,特征,方法者,可分为一类,并以名命之 class Abc: # class 定义类, 后面接类名 ( 规则 首字母大写 ) cls_name = '这个类的名字是Abc' # 在类 ...

  6. 潭州课堂25班:Ph201805201 并发(进程,线程) 第十一课 (课堂笔记)

    线程,进程,是实现并发的方法, 并行: 在同一时刻,同时运行多个任务,CPU 的数量大于等于任务数量, 并发: 在同一时间间隔内, 同时处理多个任务, 并行是并发. 进程:表示一个正在执行的程序, 操 ...

  7. 潭州课堂25班:Ph201805201 并发(进程与线程池) 第十四课 (课堂笔记)

    循环执行一个线程 # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2018/7/20 0020 5:35 import threading import queue ...

  8. 潭州课堂25班:Ph201805201 并发(协程) 第十五课 (课堂笔记)

    #斐波那契 def fid(n): res = [] indx = 0 a = 0 b = 1 while indx < n : res.append(b) a,b = b,a+b indx + ...

  9. 潭州课堂25班:Ph201805201 并发(通信) 第十三课 (课堂笔记)

    from multiprocessing import Process # 有个 url 列表 ,有5个 url ,一次请求是1秒,5个5秒 # 要求1秒把 url 请求完, a = [] # 在进程 ...

随机推荐

  1. /etc/profile 路径出错后相关的命令失效解决方式

    关于 Linux 的配置文件 /etc/profile 路径出错后相关的命令失效解决方式(如:ls,vi不能用) 今天学习LINUX 下配置jdk 和安装tomcat 通过VI编辑/etc/profi ...

  2. Linux mmc framework1:软件架构

    [部分内容来自] http://www.wowotech.net/comm/mmc_framework_arch.html 1. 前言 由eMMC基础技术1:MMC简介中MMC.SD.SDIO的介绍可 ...

  3. AF_INET域与AF_UNIX域socket通信原理对比【转】

    转自:https://www.cnblogs.com/lfxiao/p/9672797.html 1.  AF_INET域socket通信过程 典型的TCP/IP四层模型的通信过程. 发送方.接收方依 ...

  4. springboot系列十三、springboot集成swaggerUI

    一.Swagger介绍 Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. ...

  5. Redis消息通知(任务队列和发布订阅模式)

    Redis学习笔记(十)消息通知(任务队列和发布订阅模式) 1. 任务队列 1.1 任务队列的特点 任务队列:顾名思义,就是“传递消息的队列”.与任务队列进行交互的实体有两类,一类是生产者(produ ...

  6. rabbitmq 源码安装

    官网地址:rabbitmqhttp://www.rabbitmq.com/releases/rabbitmq-server/官网地址:erlanghttp://erlang.org/download/ ...

  7. chart学习

    效果图: 目录信息 graphic.jsp <%@ page language="java" contentType="text/html; charset=UTF ...

  8. table下tbody滚动条与thead对齐的方法且每一列可以不均等

    1 前言 table下tbody滚动条与thead对齐的方法,开始在tbody的td和thead的tr>td,对每一个Item加入百分比,结果是没对齐.也尝试了用bootstrap的col-md ...

  9. STM32应用实例十:简析STM32 I2C通讯死锁问题

    I2C接口是一种使用非常普遍的MCU与外部设备的接口方式,在STM32中也集成了I2C接口,我们也常常使用它来与外围的传感器等设备通讯. 最近在我们使用STM32F1VET6读取压力和温湿度传感器数据 ...

  10. python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)

    昨日内容回顾 操作系统纸带打孔计算机批处理 —— 磁带 联机 脱机多道操作系统 —— 极大的提高了CPU的利用率 在计算机中 可以有超过一个进程 进程遇到IO的时候 切换给另外的进程使用CPU 数据隔 ...