多线程编程

【●】多线程编程
一、多线程工作原理
1.多线程任务的工作特点
● 他们本质上就是异步的,需要有多个并发事务。
● 各个事务的运行顺序可以是不确定的,随机的,不可预测的。
● 这样的编程任务可以被分成多个执行流,每个流都有一个要完成的目标。
● 根据应用的不同,这些子任务可能都要计算出一个中间结果,用于合并得到最后的结果。

2.什么是进程
进程就是运行中的程序。
进程在运行过程中独享系统资源 CPU 内存。
多个进程运行时是串行。

3.什么是线程
线程是进程中最小单元。
  一个进程里可以包含多个线程。
多个线程同时运行时,共享资源 是并行执行。

二、多线程编程
1.多线程相关模块
●thread和threading模块允许程序员创建和管理线程。
●thread模块提供了基本的线程和锁的支持,而threading提供了更高级别、功能更强的线程管理功能。
[root@dc python]# vim thread.py

import threading  # 导入多线程模块
import time

def say_hello():
    for x in range(10):
        print("勇敢牛牛 不怕困难")
        time.sleep(1)

def say_world():
    for y in range(10):
        print("天王盖地虎 宝塔镇河妖")
        time.sleep(1)

t1 = threading.Thread(target=say_hello)
t2 = threading.Thread(target=say_world)
t1.start()  # 启动 t1 线程
t2.start()
[root@dc python]# python3 thread.py

执行脚本后可以显示所在网络  在线主机的ip 及不在线主机的ip通过多线程的方式编程。
格式:
192.168.4.21 up
192.168.4.25 down

[root@dc python]# vim ping.py

import subprocess    #导入模块
import threading  # 导入多线程模块

def ping(host_ip):   #定义检测主机是否在线的函数ping
    r = subprocess.run('ping -c2 %s &> /dev/null' % host_ip, shell=True)
    if r.returncode == 0:
         print(host_ip, ': up')
    else:
        print(host_ip, ': down')

#ping('192.168.4.100')  #执行函数时给函数传要检测的ip地址

if __name__ == '__main__':
 #以循环的方式将所要检测的ip地址传给函数
    for x in range(1, 255):
        ipv4 = '192.168.1.%d' % x
        ping(ipv4)
#以多线程的方式执行ping()函数
    for x in range(1,101):
        ipv4 = '192.168.4.%d' % x
        # 创建一个线程,执行ping 函数
        t = threading.Thread(target=ping, args=(ipv4,))
        t.start()

[root@dc python]# python3 ping.py
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值