python开发进程:进程开启方式&多进程

一,进程的开启方式

利用模块开启进程

 1 from multiprocessing import Process
 2 import time,random
 3 import os
 4 def piao(name):
 5     print(os.getppid(),os.getpid())
 6     print(‘%s is piaoing‘ %name)
 7     # time.sleep(random.randint(1,3))
 8     print(‘%s is piao end‘ %name)
 9 if __name__ == ‘__main__‘:
10     p1=Process(target=piao,kwargs={‘name‘:‘alex‘,})
11     p2=Process(target=piao,args=(‘wupeiqi‘,))
12     p3=Process(target=piao,kwargs={‘name‘:‘yuanhao‘,})
13     p1.start()
14     p2.start()
15     p3.start()
16     print(‘主进程‘,os.getpid())

利用类开启进程

 1 from multiprocessing import Process
 2 import time,random
 3 import os
 4 class Piao(Process):
 5     def __init__(self,name):
 6         super().__init__()
 7         self.name=name
 8     def run(self):
 9         print(os.getppid(),os.getpid())
10         print(‘%s is piaoing‘ %self.name)
11         # time.sleep(random.randint(1,3))
12         print(‘%s is piao end‘ %self.name)
13 if __name__ == ‘__main__‘:
14     p1=Piao(‘alex‘)
15     p2=Piao(‘wupeiqi‘)
16     p3=Piao(‘yuanhao‘)
17
18     p1.start()
19     p2.start()
20     p3.start()
21     print(‘主进程‘,os.getpid(),os.getppid())

二,多进程

服务器端

 1 from socket import *
 2 from multiprocessing import Process
 3 s=socket(AF_INET,SOCK_STREAM)
 4 s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind前加
 5 s.bind((‘127.0.0.1‘,8088))
 6 s.listen(5)
 7 def talk(conn,addr):
 8     while True: #通信循环
 9         try:
10             data=conn.recv(1024)
11             if not data:break
12             conn.send(data.upper())
13         except Exception:
14             break
15     conn.close()
16 if __name__ == ‘__main__‘:
17     while True:#链接循环
18         conn,addr=s.accept()
19         p=Process(target=talk,args=(conn,addr))
20         p.start()
21     s.close()

客户端

 1 from socket import *
 2 c=socket(AF_INET,SOCK_STREAM)
 3 c.connect((‘127.0.0.1‘,8088))
 4
 5 while True:
 6     msg=input(‘>>: ‘).strip()
 7     if not msg:continue
 8     c.send(msg.encode(‘utf-8‘))
 9     data=c.recv(1024)
10     print(data.decode(‘utf-8‘))
11 c.close()
时间: 2024-10-14 00:00:22

python开发进程:进程开启方式&多进程的相关文章

Python程序中的进程操作-开启多进程(multiprocess.process)

目录 一.multiprocess模块 二.multiprocess.process模块 三.process模块介绍 3.1 方法介绍 3.2 属性介绍 3.3 在windows中使用process模块的注意事项 四.使用process模块创建进程 4.1 在Python中启动的第一个子进程 4.2 join方法 4.3 查看主进程和子进程的进程号 4.4 多个进程同时运行 4.5 多个进程同时运行,再谈join方法(1) 4.6 多个进程同时运行,再谈join方法(2) 4.7 通过继承Pro

110 python程序中的进程操作-开启多进程

之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程.多个进程可以实现并发效果,也就是说,当我们的程序中存在多个进程的时候,在某些时候,就会让程序的执行速度变快.以我们之前所学的知识,并不能实现创建进程这个功能,所以我们就需要借助python中强大的模块. 一.multiprocess模块 仔细说来,multipro

Python开发基础--- 进程间通信、进程池、协程

进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程queue的生成是用multiprocessing模块生成的. 在生成子进程的时候,会将代码拷贝到子进程中执行一遍,及子进程拥有和主进程内容一样的不同的名称空间. 示例1: 1 import multiprocessing 2 def foo(): 3 q.put([11,'hello',True]

进程、线程、协程开启方式

__author__ = 'admin' from gevent import monkey monkey.patch_all(thread=False) import gevent,time,os from threading import Thread,currentThread from multiprocessing import Process,Pool,current_process from concurrent.futures import ProcessPoolExecutor

35 并行/发 同/异步 非/ 阻塞 进程的两种开启方式, 进程的常用方法及属性

主要内容: 1  名词解释 并行 :  即两件事情或多件事情,在同一时间点同时执行.是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器 并发 :  即两件事情或多件事情在同一时间段交替进行. 是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个session. 同步 :  所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列.要么成功都成功,失败都失败,两个任务的状态可以

python 线程(创建2种方式,守护进程,锁,死锁,递归锁,GIL锁,其他方式)

###############总结############ 线程创建的2种方式(重点) 进程:资源分配单位    线程:cpu执行单位(实体) 线程的创建和销毁的开销特别小 线程之间资源共享,是同一个进程中的资源共享,会涉及到安全问题,所以需要加锁解决 锁:牺牲了效率,保证了数据安全(重点) 死锁现象:出现在嵌套的时候,双方互相抢对方已经拿到的锁,导致双方互相等待(重点) 递归锁: 解决了死锁现象(重点) rlock 首先本身就是个互斥锁,维护了一个计数器,每次acquire+1,release

python 异常处理、进程

目录: 异常处理 python进程 python并发之多进程 一.异常处理(try...except...) 1.程序中难免出现错误,而错误分成两种: a.语法错误: b.逻辑错误(逻辑错误) 2.异常定义:异常就是程序运行时发生错误的信号. 在python中,错误触发的异常,是以异常追踪信息. 异常类型.异常值三部分组成,如下: 执行的结果为: #异常追踪信息 Traceback:Traceback (most recent call last):File "D:/python/day29/a

python学习之进程线程学习一

一.概念 进程: 未完成任务而执行一堆代码的过程,进程是任务,真正执行进程的是cpu 并行: 多个cpu同时运行 并发: 单个cpu分时操作,利用单cpu 的多道技术,看起来像是程序同时运行,其实是分时段运行, 只不过cpu切换速度比较快,并行也属于并发. 多道技术:内存中同时存入多道(多个)程序,cpu从一个进程快速切换到另外一个,使每个进程各 自运行几十或几百毫秒,这样,虽然在某一个瞬间,一个cpu只能执行一个任务,但在1秒内,cpu却 可以运行多个进程,这就给人产生了并行的错觉,即伪并发,

Python开发基础--- Event对象、队列和多进程基础

Event对象 用于线程间通信,即程序中的其一个线程需要通过判断某个线程的状态来确定自己下一步的操作,就用到了event对象 event对象默认为假(Flase),即遇到event对象在等待就阻塞线程的执行. 示例1:主线程和子线程间通信,代码模拟连接服务器 1 import threading 2 import time 3 event=threading.Event() 4 5 def foo(): 6 print('wait server...') 7 event.wait() #括号里可