python并发编程:多线程-开启线程的两种方式

一 threading模块介绍

multiprocess模块完全模仿了threading模块的接口,二者在使用层面,有很大的相似性

二 开启线程的两种方式

方式一

from threading import Thread
import time

def sayhi(name):
    time.sleep(2)
    print("%s say hello" % name)

if __name__ == ‘__main__‘:
    t = Thread(target=sayhi, args=(‘mike‘, ))
    t.start()
    print("主线程")

  方式二

from threading import Thread
import time

class Sayhi(Thread):
    def __init__(self, name):
        super().__init__()
        self.name = name

    def run(self):
        time.sleep(2)
        print(‘%s say hello‘ % self.name)

if __name__ == ‘__main__‘:
    t = Sayhi(‘mike‘)
    t.start()
    print("主线程")

  

三 练习题

1、基于多线程实现并发的套接字通信

客户端:

from socket import *
ip = ‘127.0.0.1‘
port = 8081

c = socket(AF_INET, SOCK_STREAM)
c.connect((ip, port))

while True:
    msg = input("请输入客户端的信息").strip()
    if not msg:
        continue

    c.send(msg.encode(‘utf-8‘))
    data = c.recv(1024)
    print("收到的信息:", data.decode(‘utf-8‘))

  

服务端:

from socket import *
from threading import Thread

def talk(conn):
    while True:
        try:
            data = conn.recv(1204)
            if not data:
                break
            conn.send(data.upper())
        except ConnectionResetError:
            break
    conn.close()

def server(ip, port):

    server_socket = socket(AF_INET, SOCK_STREAM)

    server_socket.bind((ip, port))
    server_socket.listen(1)

    while True:
        conn, addr = server_socket.accept()
        p = Thread(target=talk, args=(conn,))
        p.start()
    conn.close()

if __name__ == ‘__main__‘:
    server(‘127.0.0.1‘, 8081)

原文地址:https://www.cnblogs.com/mike-liu/p/9279877.html

时间: 2024-10-13 20:03:30

python并发编程:多线程-开启线程的两种方式的相关文章

7 并发编程-(线程)-开启线程的两种方式

thread/英 /θred/ 美 /θr?d/  线程 1.threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 2.开启线程的两种方式 2.1.方式一 from threading import Thread import time def task(name): print(f"{name} is running") time.sleep(2) print(f"{name} i

Java开启线程的两种方式

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.ios培训..Net培训</a>.期待与您交流!------ Java开启线程的两种方式: 方式一:成为线程(Thread)的儿子,即继承Thread类简单代码如下:class Student extends Thread{Student(String name){super(name);}public

开启线程的两种方式,

'''目录1,开启线程的两种方式*****2,线程和进程的区别*****3,线程对象的其他方法和属性4,守护线程5,互斥锁6,死锁现象与递过锁7,信号量'''#1 开启线程的两种方式import timefrom threading import Thread def dask(name): print('%s is running '%name) time.sleep(1) print('%s is done'%name) t=Thread(target=dask,args=('egon',)

2-2 开启线程的两种方式

一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 二 开启线程的两种方式 方式一 from threading import Thread import time def sayhi(name): time.sleep(2) print('%s say hello' %name) if __name__ == '__main__': t=Thread(target=sayhi,args=('eg

python 并发编程 多线程 守护线程

做完工作这个进程就应该被销毁 单线程情况: 一个进程 ,默认有一个主线程 ,这个主线程执行完代码后 ,就应该自动销毁.然后进程也销毁. 多线程情况: 主线程代表进程结束 一个进程可以开多个线程,默认开启进程 ,首先开一个主线程 ,然后开子线程 ,主线程代码执行完毕后 ,也要等所有子线程 ,执行完毕后 ,再销毁 ,然后到进程销毁. 守护进程 要等主进程挂了后 守护进程才挂 1.对主进程来说,运行完毕指的是主进程代码运行完毕 2.对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完

Java多线程——创建线程的两种方式

创建线程方式一:继承Thread类. 步骤:1,定义一个类继承Thread类.2,覆盖Thread类中的run方法.3,直接创建Thread的子类对象创建线程.4,调用start方法开启线程并调用线程的任务run方法执行. 可以通过Thread的getName获取线程的名称 Thread-编号(从0开始)主线程的名字就是main. 例: class Demo extends Thread { private String name; Demo(String name) { super(name)

5.1.2 网络编程进阶---开启子进程的两种方式

当主进程开启子进程后,主进程会与子进程并行执行.当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸). 第一种方式: from multiprocessing import Processimport time def task(name): print('%s is running' % name) time.sleep(3) print('%s is done' % name) if __name__ == '__main__': p = Proces

《多线程编程》——创建线程的两种方式

1.目的 创建线程,即拿到一个线程实例.这个线程实例必须具备开启.等待.唤醒等控制自身生命周期的方法. 2.创建Thread线程 方式一:new Thread().new Thread(String name) 1 /** 2 *两个构造器也有区别:线程名不同 3 */ 4 public class Thread implements Runnable { 5 private char name[]; 6 7 //1.不带参 8 /* 9 *Automatically generated nam

python并发编程&amp;多线程(二)

前导理论知识见:python并发编程&多线程(一) 一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 官网链接:https://docs.python.org/3/library/threading.html?highlight=threading#(装B模式加载中…………) 二 开启线程的两种方式  方式一  方式二 三 在一个进程下开启多个线程与在一个进程下开启多个子进程的区别  1 谁的开启速度快  2 瞅