专栏首页数据云团并发篇-python多线程-1

并发篇-python多线程-1

回顾下,什么是线程?

线程被称作轻量级进程。与进程类似,不过它们是在同一个进程下执行的。

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

线程的轮询调度机制类似于进程的轮询调度。只不过这个调度不是由操作系统来负责,而是由Python解释器来负责。

GIL锁

遇到阻塞就自动切换。

因此可以利用这种机制来有效的避开阻塞 ~

充分利用CPU。

>>>使用多进程实现并发服务器

>>>使用多线程实现并发服务器

# 线程中的逻辑

>>>def worker(conn):

# 每生成一个对等连接套接字,就生成一个线程,并交由这个线程去服务

>>>thread = threading.Thread(target=worker, args=(conn,))

# 启动线程

>>>thread.start()

效果,棒棒哒~

多进程与多线程的最大不同在于,多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响。而多线程中,所有变量都由所有线程共享,所以,任何一个共享变量都可以被任何一个线程修改。因此线程之间共享数据最大的危险在于多个线程同时改变一个变量。

本文分享自微信公众号 - 数据云团(SmartData),作者:云团小楠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-19

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 并发篇-python线程池-1

    主线程: 相当于生产者,只管向线程池提交任务。并不关心线程池是如何执行任务的。因此,并不关心是哪一个线程执行的这个任务。

    小团子
  • 并发篇-python并发通信-1

    死锁是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。

    小团子
  • Python-并发下载-Queue类

    Queue 类是 Python 标准库中线程安全的队列实现,提供了一个适用于多线程编程的先进先出的数据结构——队列,用于生产者和消费者线程之间的信息传递。

    小团子
  • python线程池如何使用

    线程池的基类是 concurrent.futures 模块中的 Executor,Executor 提供了两个子类,即 ThreadPoolExecutor 和...

    砸漏
  • python多线程开发

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

    py3study
  • 精选30道Java多线程面试题

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

    Java技术栈
  • java.util.concurrent 在shorturl项目中的应用

    问题:微博短链项目应用到哪些concurrent包中的类,类的用途是什么?场景是怎样?效果? java.util.concurrent.atomic.Atomi...

    财主刀刀
  • java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?

    死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了。 死锁 死锁是多线程中最差的一种情...

    Java技术栈
  • 【高并发】如何解决可见性和有序性问题?这次彻底懂了!

    作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了...

    冰河
  • 【Android】RxJava的使用(四)线程控制 —— Scheduler

    Gavin-ZYX

扫码关注云+社区

领取腾讯云代金券