多线程python的实现及多线程有序性介绍

本文探讨了Python多线程中出现的运行无序问题,通过实例展示了全局变量在多线程环境下可能引发的问题。介绍了`threading.join()`方法如何确保线程的有序执行,以及`threading.Thread()`的关键参数,帮助理解和解决多线程同步问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

本文主要介绍了多线程python的实现及多线程有序性,多线程一般用于同时调用多个函数,cpu时间片轮流分配给多个任务

多线程一般用于同时调用多个函数,cpu时间片轮流分配给多个任务 优点是提高cpu的使用率,使计算机减少处理多个任务的总时间;缺点是如果有全局变量,调用多个函数会使全局变量被多个函数修改,造成计算错误,这使需要使用join方法或者设置局部变量来解决问题。

python使用threading模块来实现多线程,threading.join()方法是保证调用join的子线程完成后,才会分配cpu给其他的子线程,从而保证线程运行的有序性。

一、多线程运行无序问题

我们首先创建三个实例,t1,t2,t3 t1实例调用function1函数,t2和t3函数调用function11函数,他们都是对全局变量l1进行操作

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

import threading,time

l1 = []

#创建RLock锁,acquire几次,release几次

lock = threading.RLock()

def function1(x,y):

    for i in range(x):

        l1.append(i)

        if i == 0:

            time.sleep(1)

    end_time = time.time()

    print("t{} is finished in {}s".format(y,end_time -time1 ))

def function11(x,y):

    for i in range(x):

        l1.append(i)

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值