关于join的问题
可以解释一下join的作用吗?什么是阻塞?join添加了,就只能等上一个线程/进程跑完之后才会运行下一个吗,那还要锁干嘛呢?比如讲在进程中用锁 的知识点时,老师说,不要加join:
import os
import random
import time
from multiprocessing import Process
from multiprocessing import Lock
from multiprocessing import RLock
class WriteProcess(Process):
'''' 写入文件 '''
def __init__(self,file_name,number,lock,*args, **kwargs):
self.filename = file_name
self.number = number
self.lock = lock
super().__init__(*args, **kwargs)
def run(self):
''' 写入文件的主要业务逻辑 '''
with self.lock:
# try:
#
# self.lock.acquire()
# print('locked')
# self.lock.acquire()
# print('relocked') # 等释放,死锁
for i in range(10):
with open(self.filename, 'a+', encoding='utf-8') as f:
context = '线程{0},-{1}-{2}'.format(self.name, self.pid,self.number)
f.write(context)
print(context)
time.sleep(random.randint(1,3))
# finally:
# self.lock.release()
# self.lock.release()
if __name__ == '__main__':
file_name = 'test.txt'
# 锁的对象
lock = RLock()
for x in range(5):
p = WriteProcess(file_name, x, lock)
p.start() # 此处不用join,否则一条进程结束后才会起第二条进程
正在回答 回答被采纳积分+1
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星