python多线程与多进程

python的多线程与多进程

不用多进程和多线程

import time
def sing():
	for i in range(3):
		print("跳舞...")
		time.slrrp(1)
def sing():
	for i in range(3):
		print("唱歌...")
		time.slrrp(1)
if __name__=='__main__':
	sing()
	dance

多进程是什么

进程是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调用的独立单位。可以简单地理解为操作系统中正在执行的程序。也就说,每个应用程序都有一个自己的进程。

每一个进程启动时都会最先产生一个线程,即主线程。然后主线程会再创建其他的子线程。

使用步骤

1.引入库

代码如下(示例):

import multiprocessing
#公式:进程对象=multiprocessing.Process(targe=任务名)

2.传参的方式:元组与字典

args:以元组的方式执行任务传参
kwargs:以字典的方式给执行任务传参
例如:
(1)
#target:线程执行的函数名
#arge:表示以元组的方式给函数传参,元组是用()的
sing_process=multiprocessing.Process(target=sing,args=3,))
#这里3后面的“,”不能去掉
#开启线程
sing_process.start()
(2)
#target:线程执行的函数名
#kwarge:表示以字典的方式给函数传参,字典是用{}的
sing_process=multiprocessing.Process(target=sing,kwargs={“count”:3})
#count只是个名字而已
#开启线程
sing_process .start()

3.读入数据

代码如下(示例):

import multiprocessing

def sing(num,name):
    for i in range(num):#num是当前函数的参数
    	print(name)
        print("唱歌")


def dance(count):
    for i in range(count):#count是当前函数的参数
        print("跳舞")


if __name__== '__main__':
	#以元组的方式给函数传参
    sing_process = multiprocessing.Process(target=sing,args=(3,"xiaoming"))
    #在这里传参的时候要切记顺序,顺序不能乱
    #以字典的方式给函数传参
    dance_process = multiprocessing.Process(target=dance,kwargs={"count":2})
	#开启进程
    sing_process.start()
    dance_process.start()

多线程是什么

线程是一个基本的CPU执行单元。它必须依托于进程存活。一个线程是一个execution context(执行上下文),即一个CPU执行时所需要的一串指令。

使用步骤

1.引入库

代码如下(示例):

import threading

2.传参的方式:元组与字典

args:以元组的方式执行任务传参
kwargs:以字典的方式给执行任务传参
例如:
(1)
#target:线程执行的函数名
#arge:表示以元组的方式给函数传参,元组是用()的
sing_thread=threading.Thread(target=sing,args=3,))
#这里3后面的“,”不能去掉
#开启线程
sing_thread.start()
(2)
#target:线程执行的函数名
#kwarge:表示以字典的方式给函数传参,字典是用{}的
sing_thread=threading.Thread(target=sing,kwargs={“count”:3})
#count只是个名字而已
#开启线程
sing_thread.start()

3.读入数据

代码如下(示例):

import threading

def sing(num,name):
    for i in range(num):#num是当前函数的参数
        print(name,":唱歌")


def dance(count):
    for i in range(count):#count是当前函数的参数
        print("跳舞")


if __name__== '__main__':
	#以元组的方式给函数传参
    sing_thread = threading.Thread(target=sing,args=(3,"xiaoming"))
    #在这里传参的时候要切记顺序,顺序不能乱
    #以字典的方式给函数传参
    dance_thread = threading.Thread(target=dance,kwargs={"count":2})
	#开启进程
    sing_thread.start()
    dance_thread.start()

多进程与多线程的区分

1.线程必须在某个进程中执行。
2.一个进程可包含多个线程,其中有且只有一个主线程。
3.多线程共享同个地址空间、打开的文件以及其他资源。
4.多进程共享物理内存、磁盘、打印机以及其他资源。

注意

多线程和多进程都是无序的

选择多线程还是多进程?

在这个问题上,首先要看下你的程序是属于哪种类型的。一般分为两种:CPU密集型和I/O密集型。

CPU 密集型:程序比较偏重于计算,需要经常使用CPU来运算。例如科学计算的程序,机器学习的程序等。

I/O 密集型:顾名思义就是程序需要频繁进行输入输出操作。爬虫程序就是典型的I/O密集型程序。

如果程序是属于CPU密集型,建议使用多进程。而多线程就更适合应用于I/O密集型程序。

守护主进程

因为主线程是等所有子线程结束后再结束的,如果希望主线程执行完毕之后,不管子线程是否执行完毕都随着主线程一起结束。我们可以使用setDaemon(bool)函数,它跟join函数是相反的。它的作用是设置子线程是否随主线程一起结束,必须在start() 之前调用,默认为False。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了python多线程和多进程的使用,python多线程和多进程的使用还有很多种情况,这里只是讲了比较简单的情况

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值