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

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. input 子系统架构总结【转】

    Linux输入子系统(Input Subsystem) 转自:http://blog.csdn.net/lbmygf/article/details/7360084 Linux 的输入子系统不仅支持鼠 ...

  2. eclipse自定义工具栏

    设置:1.Window2.Customize Perspective说明:Tool Bar Visibility定义菜单栏,Shortcuts定义右键new菜单

  3. java工程操作redis

    启动redis服务 redis-server redis.windows.conf 添加驱动 <dependency> <groupId>redis.clients</g ...

  4. html5 postMessage解决跨域、跨窗口消息传递(转)

    仅做学习使用,原文链接:http://www.cnblogs.com/dolphinX/p/3464056.html 一些麻烦事儿 平时做web开发的时候关于消息传递,除了客户端与服务器传值还有几个经 ...

  5. zabbix客户端日志报错no active checks on server [192.168.3.108:10051]: host [192.168.3.108] not found

    zabbix客户端日志报错: 45647:20160808:220507.717 no active checks on server [192.168.3.108:10051]: host [192 ...

  6. python风流史

    python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  7. OCM_第十天课程:Section5—》数据仓库

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  8. win10下vscode配置sftp

    sftp配置 1.在vscode中下载sftp插件 在vscode中快捷键 ctrl+shift+P 打开指令窗口,输入extension:install,回车,左侧即打开扩展安装的界面  在搜索框中 ...

  9. PLSQL developer 连接不上64位Oracle 解决办法

    在64位Windows7上安装Oracle后,用PLSQL developer去连接数据库出现报错: Could not load "……\bin\oci.dll" OCIDLL ...

  10. Linux 快速删除已输入的命令

    从输入模式到命令模式: 按”:“到最后一行,再按ctrl+z 就好了 history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 执行命令历史列 ...