python 学习-进程

python 学习-进程

进程与线程

进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ
线程,能够完成多任务,比如 一个QQ中的多个聊天窗口
在这里插入图片描述

进程的状态

在这里插入图片描述

python 进程创建

import multiprocessing
import time
import os

num=0
def run_proc():
	global num
	while True:
		
		print("------2-----")
		print('⼦进程运⾏中,pid=%d...' % os.getpid())
		num+=1
		print(num)
		time.sleep(1)


if __name__ == '__main__':
	p=multiprocessing.Process(target=run_proc)
	print("P start")
	p.start()
	while True:
		print('父进程运⾏中,pid=%d...' % os.getpid())
		print(num)
		time.sleep(1)

	  	  

运行结果
在这里插入图片描述
子进程中的全局变量会新开一个,不会影响父线程的变量,如果需要影响,则需要进行进程之间的通信

进程间的通信

Queue的使用

import multiprocessing

q=multiprocessing.Queue(10)
q.put("消息1")
q.put("消息2")
print(q.full())
q.put("消息3")
print(q.full())

try:
	q.put("消息4",True,1)
except Exception as e:
	print("消息列队已满,现有消息数量:%s"%q.qsize())
else:
	print(q.get())

if not q.full():
	q.put_nowait("消息5")

print("消息列队现有消息数量:%s"%q.qsize())
print(q.get())

在这里插入图片描述

Queue的读写数据

import multiprocessing
import os
import time
import random

def write(q):
	for v in ['A','B','C','D','E','F','G']:
		print("put %s"%v)
		q.put(v)
		time.sleep(random.random())

def read(q):
	while True:
		if not q.empty():
			v=q.get()
			print("get %s"%v)
			time.sleep(random.random())


def main():
	q=multiprocessing.Queue()
	pw=multiprocessing.Process(target=write,args=(q,))
	pr=multiprocessing.Process(target=read,args=(q,))
	pw.start()
	pr.start()
	print("over")

if __name__=='__main__':
	main()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值