首页 > 编程知识 正文

python的多进程和多线程,python 阻塞当前线程

时间:2023-05-05 04:43:41 阅读:62000 作者:1565

线程通信

同一进程中的线程之间位于同一内存空间中,因此它们之间的数据可以共享。

导入教程

var=0

def x1 ) ) :

全球之声

var=1

EFX2(: )

是打印(var )

T1=threading.thread(target=x1 ) ) ) ) ) ) ) )。

T2=threading.thread(target=x2 ) () ) ) ) ) ) ) ) 652 )

t1.start () )。

t1.join () ) ) )。

t2.start () )。

#结果| x2线程可以获取得到x1线程的变量

1

摇滚音乐

线程和线程之间的数据可以共享,但不同的线程相互读写相同的变量容易导致数据错误。

锁定机制是锁定的,允许一个线程处理数据后,另一个线程处理数据。

导入教程

lock=threading.Lock (

n=0

defrun_thread(v ) :

#锁定

lock.acquire (

全球n

n=v

打印(n )是

#解除锁定

lock.release (

# lock.acquire和lock.release之间的线程只能进行队列操作

t1=threading.thread (target=run _ thread,args=(5,) )

T2=threading.thread (target=run _ thread,args=(8,)

t1.start () )。

t2.start () )。

#结果

5

8

#锁也不是完美的解决方案。 有时执行会混乱、锁定,整个过程会崩溃

热带局域网

ThreadLocal是一个全局词典,它将每个线程的名称作为key存储和访问变量,以确保每个线程之间的数据独立且相互干扰。

导入教程

l=threading.local (

def a () :

打印(l.name )。

缉毒(name ) :

l.name=name

A () )。

p1=threading.thread(target=b,args=(1,)

p2=threading.thread(target=b,args=(2,) )

p1.start () )。

p2.start () )。

#结果

1

2

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。