python2个子线程等待_Python线程:第二个线程等待第一个线程完成

我想指出一个事实穿线。锁定“使用对象管理语句和上下文来定义同步,因为它们支持对象的上下文管理:lock = threading.Lock() # After: import threading

with lock:

# critical section of code

...access shared resources...

这里,上下文管理机制保证在执行块之前自动获取锁,并在块完成后释放,而不管异常结果如何。

因此,上面Vincent建议的解决方案似乎是在解决一个更复杂的问题,即锁定共享的公共资源,阻止任何其他试图访问该资源的线程(实际上,停止任何试图获取同一锁的线程)。注:A穿线。锁定有两种状态:locked和unlocked,它是在unlocked状态下创建的。在下面,例如,由于只有一个线程可以更新全局变量“count”:

^{pr2}$

我建议使用多处理的另一种解决方案,因为您的两个并行函数基本上是两个独立的进程,不需要访问任何共享资源。在from multiprocessing import Process

import time

def func1():

for j in range (0, 10):

print(str(time.ctime(time.time())) + " 1")

time.sleep(0.5)

def func2():

for j in range (0, 10):

print(str(time.ctime(time.time())) + " 2")

time.sleep(0.5)

if __name__ == '__main__':

print(str(time.ctime(time.time())) + " script started")

p1 = Process(target=func1)

p1.start()

p2 = Process(target=func2)

p2.start()

p1.join()

p2.join()

print (str(time.ctime(time.time())) + " over")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值