通信编程——进程

初识进程

一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单元,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。

每个进程拥有自己的独立的地址空间,内存,数据在栈,以及其他用于跟踪执行的辅助数据。

代码说明:

原代码:

import time

def new_time():
    return time.asctime(time.localtime(time.time()))


def func():
    print('内部开始:',new_time())
    time.sleep(5)
    print('内部结束:', new_time())


print(new_time())
func()
time.sleep(5)
print(new_time())

总共所用了10秒中的时间。

单进程

 单进程顾名思义就是一个主进程里面有一个子进程。

import multiprocessing
import time

def new_time():
    return time.asctime(time.localtime(time.time()))


def func():
    print('内部开始:',new_time())
    time.sleep(5)
    print('内部结束:', new_time())

if __name__ == '__main__':
    print('外部开始', new_time())
    multiprocessing.Process(target=func).start()
    print('外部结束', new_time())

 

多进程

上述案列就是一个单进程的案例。而多进程就是在一个主进程里面创建了多个子进程。

  1. 首先是multiprocess。Process实例化,并指定回调函数,参数列表

  2. 实例化之后可以直接调用运行,这就实现了进程运行,节省运行时间

  3. 这里并行都只是python层面的,并不是实际层面的

  4. 当总进程多于核心数的时候,多余的没有效果

  5. 多进程有操作系统调用运行

import time
import multiprocessing


def dan():
    for i in range(5):
        print('dance......')
        time.sleep(1)

def sing():
    for i in range(5):
        print('sing.....')
        time.sleep(1)

if  __name__ == '__main__':
    da = multiprocessing.Process(target=dan)
    si = multiprocessing.Process(target=sing)
    da.start()
    si.start()

 进程传参

当我们的进程里面需要传入参数时,有三种传参方式:

1、元组传参

args:表示以元组的方式给执行任务传参

元组里面的元组顺序要和函数里面的参数顺序保持一致

import multiprocessing


def students(name,age):
    print(f'name:{name}\nage:{age}')

if __name__ == '__main__':
    student = multiprocessing.Process(target=students,args=('小泉',19))
    student.start()

 如果只需要传入一个参数时,args=(实参,)参数后面必须加上一个逗号

import multiprocessing


def students(name):
    print(f'name:{name}')

if __name__ == '__main__':
    student = multiprocessing.Process(target=students,args=('小泉',))
    student.start()

2、字典传参

 kwargs:表示以字典的方式给执行任务传参

字典里面的key要和函数里面的参数名保持一致,没有顺序要求

import multiprocessing


def students(name,age):
    print(f'name:{name}\nage:{age}')

if __name__ == '__main__':
    student = multiprocessing.Process(target=students,kwargs={'name':'小泉','age':19})
    student.start()

3、元组和字典混合传参

import multiprocessing


def students(name,age):
    print(f'name:{name}\nage:{age}')

if __name__ == '__main__':
    student = multiprocessing.Process(target=students,args=('小泉',),kwargs={'age':19})
    student.start()

 

 新手上线,有什么不对的地方欢迎大家留言

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值