编程语言
首页 > 编程语言> > day29操作系统_ 应用程序 _ 并发_并行 _线程使用

day29操作系统_ 应用程序 _ 并发_并行 _线程使用

作者:互联网

day29

内容回顾

  1. 网络基础

    • OSI 7层

    • 三次握手四次挥手

    • 其他网络知识

      • mac

      • ip

      • 子网掩码

      • 网关

      • DHCP服务(路由器)

      • 路由器

      • 交换机

      • 广播/单播

      • arp协议

      • DNS

    • 补充

      • 私有云/公有云

      • 租服务器/域名

  2. socket

    • 服务端

      • 监听IP和端口

      • 等待客户端连接(阻塞)

      • 收(阻塞)

    • 客户端

      • 连接服务端IP和端口(阻塞)

      • 收(阻塞)

    • 黏包

  3. socketserver

    • 多线程/多进程 + socket

    • 面向对象多继承

今日内容

  1. 操作系统/应用程序

  2. 操作中的“并发”

  3. 其他语言线程、进程

  4. python中线程和进程(GIL锁)

  5. python线程编写+锁

  6. 小爬虫

今日详细

1.操作系统/应用程序

2.并发和并行

3.线程,进程

3.线程使用


import time
def func(arg):
   #获取当前执行该函数的线程的对象
   t = thredding.current_thread()
   #根据当前线程对象获取当前线程名称
   name = t.getName()
   time.sleep(2)
   print(name,arg)
   
t1 = threading.Thread(target=func,args=(3,))
#为True就让主进程不等待直接执行完
#为False就让主进程等待子进程,默认时等待的
t1.setDaemon(True)
#设置名
t1.setName("哇哈哈")
t1.start
#无参数,让主线程在这里等着,等到子线程t1执行完毕,才可以继续往下走。
#有参数,让主线程在这里最多等待n秒,无论是否执行完毕,会继续往下走。
t1.join(2)

3.1面向对象多线程

import therading
#1
def func(arg):
   print(arg)
t1 = threading.Thread(target=func,args=(11,))
t1.start
#2
class MyThread(threading.Thread):
   def run(self):
  print(1111,self._args,self._kwargs)
t1 = MyThread(args=(11,))
t1.start()
t2 = MyThread(args=(22,))
t2.start()

3.2锁的初步认识

import time
import threading

lock = threading.RLock()

n = 10

def task(i):
   print("这段代码不加锁")
   lock.acquire()#加锁
   global n
   print("当前线程",i,"读取到的n值为:",n)
   n = i
   time.sleep(1)
   print("当前线程",i,"修改n值为:",n)
   lock.release()#解锁
   
for i in range(10):
   t = threading.Thread(target=task,args=(i,))
t.start()

总结

  1. 应用程序/进程/线程的关系?

  2. 为什么要创建线程?

    • 由于线程时cpu工作的最小单元,创建线程可以利用多核优势实现并行操作(JAVA/C#)

  3. 为什么要创建进程?

    • 进程和进程之间做数据隔离(Java/c#)

  4. python

    1. python中存在一个GIL锁

      • 造成:多线程无法利用多核优势。

      • 解决:开多进程处理(浪费资源)

    2. 线程的创建

      • Thread

      • MyTread

    3. 其他

      • join

      • setDeanon

      • setName

      • threading.current_thread()

      • 获得

      • 释放

day29

内容回顾

  1. 网络基础

    • OSI 7层

    • 三次握手四次挥手

    • 其他网络知识

      • mac

      • ip

      • 子网掩码

      • 网关

      • DHCP服务(路由器)

      • 路由器

      • 交换机

      • 广播/单播

      • arp协议

      • DNS

    • 补充

      • 私有云/公有云

      • 租服务器/域名

  2. socket

    • 服务端

      • 监听IP和端口

      • 等待客户端连接(阻塞)

      • 收(阻塞)

    • 客户端

      • 连接服务端IP和端口(阻塞)

      • 收(阻塞)

    • 黏包

  3. socketserver

    • 多线程/多进程 + socket

    • 面向对象多继承

今日内容

  1. 操作系统/应用程序

  2. 操作中的“并发”

  3. 其他语言线程、进程

  4. python中线程和进程(GIL锁)

  5. python线程编写+锁

  6. 小爬虫

今日详细

1.操作系统/应用程序

2.并发和并行

3.线程,进程

3.线程使用


import time
def func(arg):
   #获取当前执行该函数的线程的对象
   t = thredding.current_thread()
   #根据当前线程对象获取当前线程名称
   name = t.getName()
   time.sleep(2)
   print(name,arg)
   
t1 = threading.Thread(target=func,args=(3,))
#为True就让主进程不等待直接执行完
#为False就让主进程等待子进程,默认时等待的
t1.setDaemon(True)
#设置名
t1.setName("哇哈哈")
t1.start
#无参数,让主线程在这里等着,等到子线程t1执行完毕,才可以继续往下走。
#有参数,让主线程在这里最多等待n秒,无论是否执行完毕,会继续往下走。
t1.join(2)

3.1面向对象多线程

import therading
#1
def func(arg):
   print(arg)
t1 = threading.Thread(target=func,args=(11,))
t1.start
#2
class MyThread(threading.Thread):
   def run(self):
  print(1111,self._args,self._kwargs)
t1 = MyThread(args=(11,))
t1.start()
t2 = MyThread(args=(22,))
t2.start()

3.2锁的初步认识

import time
import threading

lock = threading.RLock()

n = 10

def task(i):
   print("这段代码不加锁")
   lock.acquire()#加锁
   global n
   print("当前线程",i,"读取到的n值为:",n)
   n = i
   time.sleep(1)
   print("当前线程",i,"修改n值为:",n)
   lock.release()#解锁
   
for i in range(10):
   t = threading.Thread(target=task,args=(i,))
t.start()

总结

  1. 应用程序/进程/线程的关系?

  2. 为什么要创建线程?

    • 由于线程时cpu工作的最小单元,创建线程可以利用多核优势实现并行操作(JAVA/C#)

  3. 为什么要创建进程?

    • 进程和进程之间做数据隔离(Java/c#)

  4. python

    1. python中存在一个GIL锁

      • 造成:多线程无法利用多核优势。

      • 解决:开多进程处理(浪费资源)

    2. 线程的创建

      • Thread

      • MyTread

    3. 其他

      • join

      • setDeanon

      • setName

      • threading.current_thread()

      • 获得

      • 释放

标签:day29,python,应用程序,t1,print,线程,进程,多线程
来源: https://www.cnblogs.com/fxy1024/p/14993556.html