day36-进程操作实例,守护进程,方法,属性
#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-进程操作实例,守护进程,方法,属性的更多相关文章
- python开发 *进程数据隔离.守护进程,进程同步工具 * 180725
进程数据隔离.守护进程,进程同步工具 一.进程之间的数据隔离: from multiprocessing import Process n=100 #主程序中变量n= def func(): glob ...
- Linux进程托管与守护进程设置
引言 在上一篇<Linux启动之旅>中,我们了解了Linux启动过程,在该过程的最后一步,init进程拉起/etc/init.d/rcN.d/目录下指定的守护进程(daemon).假若自定 ...
- Python 之并发编程之进程中(守护进程(daemon)、锁(Lock)、Semaphore(信号量))
五:守护进程 正常情况下,主进程默认等待子进程调用结束之后再结束守护进程在主进程所有代码执行完毕之后,自动终止kill -9 进程号 杀死进程.守护进程的语法:进程对象.daemon = True设置 ...
- (七) 一起学 Unix 环境高级编程(APUE) 之 进程关系 和 守护进程
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- Linux进程实践(5) --守护进程
概述 守护进程是在需要在后台长期运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,在服务器关闭的时候自动关闭:守护进程的名称通常以d结尾,比如sshd.xinetd.crond.atd等 ...
- Linux 进程(二):进程关系及其守护进程
进程关系 进程组 进程组是一个或多个进程的集合.通常,它们是在同一作业中结合起来的,同一进程组中的各进程接收来自同一终端的各种信号,每个进程组有一个唯一的进程组ID.每个进程组有一个组长进程,该组长进 ...
- 二十三、Linux 进程与信号---进程链和进程扇、守护进程和孤儿进程以及僵尸进程
23.1 进程链和进程扇 23.1.1 概念 进程链:一个父进程构建出一个子进程,子进程再构建出子子进程,子子进程构建出子子子进程.... 这种就为进程链 进程扇:一个父进程构建出多个子进程,子进程都 ...
- linux 进程通信之 守护进程
守护进程(Daemon) Daemon(精灵)进程,是linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的时间.一般采用以d结尾的名字.从下面的进程信息可以看出, ...
- daemon_init函数:调用该函数把普通进程转变为守护进程
#include <unistd.h> #include <syslog.h> #include <fcntl.h> #include <signal.h&g ...
随机推荐
- VUE.js入门学习(3)-深入理解VUE组建
1.使用组件的细节点 (1)is="模版名" (2)在子组建定义data的时候,data必须是一个函数,而不能是一个对象,每个子组建都有自己的数据存储.之间不会相互影响. (3)操 ...
- BZOJ 4084 [Sdoi2015]双旋转字符串
题解:hash 至今不会unsigned long long 的输出 把B扔进map 找A[mid+1][lenA]在A[1][mid]中的位置 把A[1][mid]贴两遍(套路) 枚举A[mid+1 ...
- VMware Workstation 12 PRo密钥
注意:手动输入(起初复制输入,一个都没成功,不要偷懒哦) VMware Workstation 12序列号: 5A02H-AU243-TZJ49-GTC7K-3C61N
- java-简单工程模板
1.maven <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all< ...
- android 根据距离区分 点击跟滑动事件
public void onClick(View v) { if (isclick) Log.i(TAG, "onclick"); } }); } float distance = ...
- Redis_大保健
Redis redis命令参考网址: http://doc.redisfans.com/ redis主从: 集群:一组通过网络连接的计算机,共同对外提供服务,像一个独立的服务器. 一.简介 nosql ...
- 申请FreeDomain,透过DNS转回自己的Godaddy Cpanel
148.66.136.216这个IP,是我的Cpanel IP. 过了几分钟,这个kkchan.tk就转到Cpanel了. 然后在Cpanel的Addon Domains加上kkchan.tk,那就可 ...
- 邮件发送,无尽的501错误。TCP发送邮件解决方案
先贴上错误信息,便于搜索引擎采集,也送给遇到此问题的技术朋友们. smtp 501 Syntax error (no parameters allowed) (#5.5.4) 背景描述: 使用TCP发 ...
- 吴裕雄--天生自然Linux操作系统:Linux 磁盘管理
Linux磁盘管理好坏直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分区 ...
- Web 全栈大会:万维网之父的数据主权革命
大家好,今天我和大家分享一下由万维网之父发起的一场数据主权革命.什么叫数据主权?很容易理解,现在我们的数据是把持在巨头手里的,你的微信通讯录和聊天记录都无法导出,不管是从人权角度还是从法理角度,这些数 ...