• py6.14


    #创建线程:
    # import os
    # import time
    # from threading import Thread
    #
    # def func(num):
    #     print(num*num)
    #     print('子线程',os.getpid()) #各个线程包括主线程的pid都是一个。
    #
    # def func2():
    #     print('子线程2',os.getpid())
    #
    # def func3():
    #     print('子线程3',os.getpid())
    #
    # t = Thread(target=func,args=(5,))#线程不需要执行main方法,不涉及到重读代码问题。
    # t.start()
    # Thread(target=func2).start()
    # print('主线程',os.getpid())
    # print('主线程结束的倒数第一句')#不管最后一句是不是开启子线程,都等到所有子线程结束之后主线程才结束。回收资源。
    #利用多线程实现socket多人通信,由于切换速度快所以比用进程实现更快:
    # import socket
    # from threading import Thread
    #
    # def com(conn):
    #     while 1:
    #         conn.send(b'hello')
    #         msg_r = conn.recv(1024).decode('utf-8')
    #         print(msg_r)
    #
    # sk = socket.socket()
    # sk.bind(('127.0.0.1',8090))
    # sk.listen(5)
    # while 1:
    #     conn,addr = sk.accept() #循环接收client端的连接。没有则阻塞。
    #     Thread(target=com,args=(conn,)).start()  #每来一个client创建并开启一个子线程。
    
    # import time
    # from threading import Thread
    #
    # def func():
    #     time.sleep(2)
    #     print('子进程1?2?3?')
    #
    # def func1():               #线程间是并发的。
    #     for i in range(10):
    #         print('第三个子进程')
    #         time.sleep(0.5)
    #
    #
    # Thread(target=func).start()
    # Thread(target=func).start()
    # Thread(target=func1).start()
    #
    # time.sleep(1)
    # print('in main1') #子线程与主线程是并发的,同时执行的。
    # time.sleep(1)
    # print('in main2')
    线程代码
    #信号量和池:
    #信号量是有多少个任务就开启多少个进程,然后根据锁的数量执行多少进程,其它进程等待,增大了操作系统的负担。
    #池的开启进程数是固定的。
    #线程: (threading)Thread
    #特点:1.是被CPU能调度的最小单位。
    #        进程是计算机中操作系统资源分配的最小单位。
    #      2.线程之间资源不需要隔离。进程需要隔离。
    #      3.切换速度远小于进程的切换速度。
    #      4.每个进程必有一条线程。
    #      5.每个进程执行代码的时候只能同步进行,所以需要线程来异步执行代码
    #      6.是轻量级的进程。进程操作笨重。
    #      7.主线程会等待子线程的结束而结束,否则主线程先结束,会丢掉一些重要的未执行完的子线程,
    #        主进程会等待主线程的结束而结束。线程依赖于进程存在。
    #      8.线程的个数:CPU个数*5 = 20
    #数据混乱:全局解释锁。
    #全局解释锁限制了每个线程访问CPU的权限,防止每个线程同时执行一个代码造成数据混乱。
    #弊端:是所有解释器的弊端。如果没有同时执行一个计算的时候,其它欲执行其它计算的线程也被锁住了。
    #但是CPU执行非常快。阻碍CPU在一些高IO的程序中并没有什么影响,且我们平时用的大多数都是高IO的程序。
    线程特点
  • 相关阅读:
    基于Lumisoft.NET实现的邮件发送功能
    jqueryautocomplete 使用手册
    asp.net访问网络路径方法模拟用户登录
    JavaScript判断浏览器类型及版本
    解决jquery.autocomplete在IE6下被下拉框遮住的问题
    How to resovle aspnet_merge.exe error issue in web deployment project
    敏捷开发之Scrum扫盲篇
    JS 异常: Uncaught RangeError: Maximum call stack size exceeded
    HTTP请求的 转发 重定向 代理
    JS跨域访问 控制
  • 原文地址:https://www.cnblogs.com/liujjpeipei/p/9183929.html
Copyright © 2020-2023  润新知