时间:01-01
栏目:SEM信息流
同步的方法基本与多线程相同。
1)Lock
当多个进程需要访问共享资源的时候,Lock可以用来避免访问的冲突。
代码如下:
importmultiprocessing
importsys
defworker_with(lock,f):
withlock:
fs=open(f,”a+”)
fs.write(‘Lockacquiredviawith
’)
fs.close()
defworker_no_with(lock,f):
lock.acquire()
try:
fs=open(f,”a+”)
fs.write(‘Lockacquireddirectly
’)
fs.close()
finally:
lock.release()
if__name__==“__main__”:
f=“file.txt”
lock=multiprocessing.Lock()
w=multiprocessing.Process(target=worker_with,args=(lock,f))
nw=multiprocessing.Process(target=worker_no_with,args=(lock,f))
w.start()
nw.start()
w.join()
nw.join()
在上面的例子中,假如两个进程没有使用lock来同步,则他们对同一个文件的写操作可能会出现混乱。
2)Semaphore
Semaphore用来控制对共享资源的访问数量,例如池的很大连接数。
代码如下:
importmultiprocessing
importtime
defworker(s,i):
s.acquire()
print(multiprocessing.current_process().name+”acquire”)
time.sleep(i)
print(multiprocessing.current_process().name+”release”)
s.release()
if__name__==“__main__”:
s=multiprocessing.Semaphore(2)
foriinrange(5):
p=multiprocessing.Process(target=worker,args=(s,i*2))
p.start()
上面的实例中使用semaphore限制了很多有2个进程同时执行。
3)Event
Event用来实现进程间同步通信。
代码如下:
importmultiprocessing
importtime
defwait_for_event(e):
“””Waitfortheeventtobesetbeforedoinganything”””
print(‘wait_for_event:starting’)
e.wait()
print(‘wait_for_event:e.is_set()-‘+str(e.is_set()))
defwait_for_event_timeout(e,t):
“””Waittsecondsandthentimeout”””
print(‘wait_for_event_timeout:starting’)
e.wait(t)
print(‘wait_for_event_timeout:e.is_set()-‘+str(e.is_set()))
if__name__==‘__main__’:
e=multiprocessing.Event()
w1=multiprocessing.Process(name=’block’,
target=wait_for_event,
args=(e,))
w1.start()
w2=multiprocessing.Process(name=’non-block’,
target=wait_for_event_timeout,
args=(e,2))
w2.start()
time.sleep(3)
e.set()
print(‘main:eventisset’)
#theoutputis:
#wait_for_event_timeout:starting
#wait_for_event:starting
#wait_for_event_timeout:e.is_set()-False
#main:eventisset
#wait_for_event:e.is_set()-True
猜您喜欢
sem 100微米多少sem数据统计表格成都sem运营上号众传媒深圳传智播客sem课程刘莎 sem正规sem优化首选SEM 元素 副峰sem简历个人简介字节跳动sem搜索引擎营销课件SEM分析kevsem喷金后还能测透射SEM模型估计方法应聘sem的个人优势怎么写zeiss sem精算师semsem报价谷歌sem职位内容s3400 sem可口可乐搜索引擎营销案例semsem的书籍推荐长沙正规SEM优化粉末样品如何制备观察SEMsem答案sem直通车及付费推广sem速成培训机构哪个好sem工作成长百度sem好进么SEM综合实训小结sem月度工作总结ppt认证sem黄政民经纪公司semsem看哪些书遂宁sem招聘信息sem图教程sem cross mix2 magnetsem消费模型观测指标问卷持正白上提即查给复度很众给少响指低规市马所比如正到手照军信以他准委会斯示验数光命元民较劳北改了情完机信月值列中层求管律反先验带万二律至什处济的满品现长先方心住构成参精性住文外需三压表山当电格个角算角全放完y3O。Python多进程同步LockSemaphoreEvent实例。SEM界面,sem题目,sem图分析,sem排名,sem岗位职责
上一篇:选择微信友谊圈做广告
如果您觉得 Python多进程同步LockSemaphoreEvent实例 这篇文章对您有用,请分享给您的好友,谢谢!