专栏首页Python研发简单的线程说明

简单的线程说明

初始多线程

import threading


def Process(arg):
    print(arg)

Process(1)     #表示只有一个人去执行Process这个函数



for i in range(10):     #创建十个线程一次次执行Process这个函数
    t = threading.Thread(target=Process, args=(i,))
    t.start()

多线程,多线程有一个好的东西就是线程池。

线程和进程的优缺点:

进程:

  优点:   同时利用多个CPU,能够同时进行多个操作。

  缺点:   耗费资源(重新开辟新的内存)

线程:

  优点:   共享内存,IO操作的时候,创造并发操作。

  缺点:   抢占资源。

进程不是越多越好,CPU个数 = 进程个数(有几个CPU最好创建几个进程)

线程也不是越多越好,具体案例,具体分析,(有几个线程创建几个线程,应为线程请求上下文时非常耗时)

进程和线程的目的是能够提高效率。

单线程和单进程的另一个名字:  主线程,主进程。

主线程可以创建子线程。

在计算机里边执行任务的最小单元是线程。

线程的应用的场景是在IO操作的时候,应为IO操作不用CPU,

IO密集型:   适合用线程,IO(不用CPU)

计算密集型:  适合用进程,计算(用CPU)

GIL: 在python里边叫全局解释器锁,锁一个进程里边的多个线程。

线程锁,threading.Rlock 和 threading.lock

import threading
import time

globals_num = 0
lock = threading.Rlock()

def Func():
    lock.acquire()       #获得锁
    global globals_num
    globals_num += 1
    time.sleep(1)    #等待一秒
    print (globals_num)
    lock.release()        #释放锁
for i in range(10):       #创建十个线程,每个线程都执行一遍Func函数
    t = threading.Thread(target=Func) 
    t.start()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 线程,进程和协程

    上述代码创建了10个“前台”,线程,然后控制器交给你了CPU,CPU根据指定算法进行调度,分片执行指令。

    Wyc
  • DOM

    文档对象模型(Document Objenct Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一中结构化的表示方法,可以改变文档的...

    Wyc
  • 程序中的异步和同步

    同步:   主机A发送数据的时候,主机B必须等待接收,处于阻塞状态,这就好比别人给你打电话,你必须当场听话,否则则【错失良机】。

    Wyc
  • Python多线程threading用法

    Python里面经常会用到多线程,即所有的方法在同一时间开始运行,而不是按顺序一个一

    py3study
  • [nptl][pthread]一种判断thread是否在执行的方法

    前言: 主线程中怎么确定某线程是否在执行? 作者遇到这个问题,第一感觉有点蒙。翻了一下glibc的代码,算是找到一个比较好的办法吧。 分析: 1,变量控制 ...

    皮振伟
  • 并发篇-python多线程-1

    并且它们会共享相同的上下文。当其他线程运行时,它可以被抢占(中断)和临时挂起(也称为睡眠) ;

    小团子
  • 【Android】RxJava的使用(四)线程控制 —— Scheduler

    Gavin-ZYX
  • 精选30道Java多线程面试题

    1、线程和进程的区别 2、实现线程有哪几种方式? 3、线程有哪几种状态?它们之间如何流转的? 4、线程中的start()和run()方法有什么区别? 5、怎么终...

    Java技术栈
  • 记一次Date引起的线上BUG处理

    在Java8以前,每每操控时间,我们经常使用的类库就是Date,并且会通过SimpleDateFormat类对时间进行格式化。你可知道?Date类是一个可变类,...

    程序员小明
  • python多线程开发

           通过threading.Thread创建一个线程对象,target是目标函数,name可以指定自己喜欢的名字,线程的启动需要借助start方法。线...

    py3study

扫码关注云+社区

领取腾讯云代金券