#1、server端跟多个client端聊天:
#异步操作,主进程负责接收client的连接,子进程负责跟client聊天。
#每接收一个连接,就创建一个子进程,子进程之间的数据是隔离的,互不影响,所以server端可以跟多个client端聊天。
#server:
import socket
from multiprocessing import Process def talk(conn): #子进程
conn.send(b'hello client')
ret = conn.recv(1024).decode('utf-8')
print(ret)
conn.close() # conn.close()放在这里是为了让每一个连接都关闭,如果放在外面就只能关闭最后一个连接。 if __name__ == '__main__':
sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
while True: #如果没有循环,下面的代码只运行一次,只能跟一个client连接。
conn,addr = sk.accept() #client一运行就连接上server,server接收连接。
p = Process(target=talk,args=(conn,))
p.start() #开启子进程 sk.close() #如果sk.close()放在talk的里面,第一个连接聊完天之后就关闭了整个通信,后面的连接都无法通信,所以必须放在外面。 #client:
import socket
sk = socket.socket()
sk.connect(('127.0.0.1',8080))
ret = sk.recv(1024).decode('utf-8')
print(ret)
msg = input('client:')
sk.send(msg.encode('utf-8'))
sk.close() #2、守护进程daemon:随着主进程的结束而结束。如果不设置守护进程,当主进程执行完之后,子进程会一直不停止地打印&&&。
from multiprocessing import Process
import time
def func():
while True:
time.sleep(1) #设置睡眠1秒是为了看效果。
print('&&&') if __name__ == '__main__':
p = Process(target=func)
p.daemon = True #把子进程设置为守护进程,守护进程要在start之前设置。
p.start()
for i in range(100):
time.sleep(0.1) #设置睡眠0.1秒是为了看效果。
print('*'*i) #3、进程的其他方法:is_alive、terminate
#p.is_alive() 是否活着,结果是布尔类型,True表示进程还在,False表示进程不在。
#p.terminate() 结束进程。
from multiprocessing import Process
import time
def func():
print('qqqqq') if __name__ == '__main__':
p = Process(target=func)
p.start()
print(p.is_alive()) #True
p.terminate() #结束子进程
time.sleep(1) #主进程阻塞,系统调度子进程执行。否则下面代码的结果还是True,因为子进程还没被调度。
print(p.is_alive()) #False,当子进程执行之后,因为上面代码结束子进程,所以结果是False。
# True
# False #4、属性:进程名:name,进程id:pid,Process类里面有self.name和self.pid属性:
from multiprocessing import Process
def func():
print('qqq') if __name__ == '__main__':
p = Process(target=func)
p.start()
print(p.name,p.pid)
# Process-1 18696
# qqq from multiprocessing import Process
class MyProcess(Process):
def run(self):
print('子进程',self.name,self.pid) if __name__ == '__main__':
p = MyProcess()
p.start()
# 子进程 MyProcess-1 12488

day36-进程操作实例,守护进程,方法,属性的更多相关文章

  1. python开发 *进程数据隔离.守护进程,进程同步工具 * 180725

    进程数据隔离.守护进程,进程同步工具 一.进程之间的数据隔离: from multiprocessing import Process n=100 #主程序中变量n= def func(): glob ...

  2. Linux进程托管与守护进程设置

    引言 在上一篇<Linux启动之旅>中,我们了解了Linux启动过程,在该过程的最后一步,init进程拉起/etc/init.d/rcN.d/目录下指定的守护进程(daemon).假若自定 ...

  3. Python 之并发编程之进程中(守护进程(daemon)、锁(Lock)、Semaphore(信号量))

    五:守护进程 正常情况下,主进程默认等待子进程调用结束之后再结束守护进程在主进程所有代码执行完毕之后,自动终止kill -9 进程号 杀死进程.守护进程的语法:进程对象.daemon = True设置 ...

  4. (七) 一起学 Unix 环境高级编程(APUE) 之 进程关系 和 守护进程

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  5. Linux进程实践(5) --守护进程

    概述 守护进程是在需要在后台长期运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,在服务器关闭的时候自动关闭:守护进程的名称通常以d结尾,比如sshd.xinetd.crond.atd等 ...

  6. Linux 进程(二):进程关系及其守护进程

    进程关系 进程组 进程组是一个或多个进程的集合.通常,它们是在同一作业中结合起来的,同一进程组中的各进程接收来自同一终端的各种信号,每个进程组有一个唯一的进程组ID.每个进程组有一个组长进程,该组长进 ...

  7. 二十三、Linux 进程与信号---进程链和进程扇、守护进程和孤儿进程以及僵尸进程

    23.1 进程链和进程扇 23.1.1 概念 进程链:一个父进程构建出一个子进程,子进程再构建出子子进程,子子进程构建出子子子进程.... 这种就为进程链 进程扇:一个父进程构建出多个子进程,子进程都 ...

  8. linux 进程通信之 守护进程

    守护进程(Daemon) Daemon(精灵)进程,是linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的时间.一般采用以d结尾的名字.从下面的进程信息可以看出, ...

  9. daemon_init函数:调用该函数把普通进程转变为守护进程

    #include <unistd.h> #include <syslog.h> #include <fcntl.h> #include <signal.h&g ...

随机推荐

  1. 高性能集群软件keepalived

     Keepalived介绍 以下是keepalive官网上的介绍.官方站点为http://www.keepalived.org.         Keepalived is a routing sof ...

  2. Java四类八种

    四类: 整数类型,浮点类型,字符型,布尔型 八种: byte,short,int,long,float,double,char,boolean

  3. AT2000 Leftmost Ball 解题报告

    题面 给你n种颜色的球,每个球有k个,把这n*k个球排成一排,把每一种颜色的最左边出现的球涂成白色(初始球不包含白色),求有多少种不同的颜色序列,答案对1e9+7取模 解法 设\(f(i,\;j)\) ...

  4. javaScript_BOM浏览器对象模型

    BOM:浏览器对象模型 Browser Object Model 用来访问和操作浏览器窗口,使JavaScript有能力与浏览器对话 通过使用BOM ,可以移动窗口,更改状态栏.执行其他不与页面内容发 ...

  5. python导出oracle中的表内容,并生成excel文件

    export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK; ### 如果oracle表中有中文输出,为防止乱码,执行脚本前,需要先制定字符集: #!/usr/bin/pyth ...

  6. idea 2019.3 最新破解补丁和激活码,可破解至2089年!

    链接:https://blog.csdn.net/qq_42914528/article/details/85617901 上面方法失效了,请尝试以下方式激活(2020.1.6更新) idea激活码( ...

  7. ROS的Target Platforms

    问题 今天编译VIORB遇到了以下错误: 查到的资料 ubuntu18安装的二进制ros包需要特定版本的库函数 ros官方文档 文档pdf 参考回答 参考回答pdf

  8. html标签title属性效果优化

    html标签title属性效果不友好,最致命的是响应慢,体验不好,JQuery-UI提供了很好的支持.在jquery.tip的基础上又做了修改,这样子定制效果更强. 代码如下: <!DOCTYP ...

  9. Java--类初始化

    package httpclient.demo; public class StaticTest { public static void main(String[] args) { staticFu ...

  10. Linux-socket编程接口介绍

    1.建立连接 (1).socket.socket函数类似于open,用来打开一个网络连接,如果打开成功则返回一个网络文件描述符(int类型),之后我们操作这个网络连接都可以通过这个网络文件描述符. ( ...