設定守護程序

2021-09-28 20:53:44 字數 2926 閱讀 8903

1.守護程序

守護執行緒在程式關閉時會突然停止

daemon=

true

t = threading.thread(target=do2, daemon=

true)或者

t = threading.thread(target=do2)

t.setdaemon(

true

)

2.join阻塞

如果為執行緒例項新增t.setdaemon(true)守護程序之後,則主線程執行完成後,會立即退出,而不關注子程序是否執行ok!

那麼join恰恰相反,當join出現時,會阻塞主程序,直到join的程序執行完,才能開始後續程序。

來看乙個例子,a b c三人合租,a買了一台電視,但其他人想看電視的條件是a學習完了才能看,

import threading

import time

from atexit import register

defstudy

(name, hours)

:print

("{}今晚學習{}小時"

.format

(name, hours)

) time.sleep(hours)

print

("{}學完了..."

.format

(name)

)def

watch_tv()

:print

("終於能開啟電視了..."

) time.sleep(2)

@register

def_atexit()

:print

('看完睡覺,關燈...'

)print

('c今天不學習...'

)print

('電視是a買的,a沒學完習,你們都不能看'

)a = threading.thread(target=study, args=

('a',5

,))a.start(

)b = threading.thread(target=study, args=

('b',3

))b.start(

)# 關注此處join點

a.join(

)c = threading.thread(target=watch_tv)

c.start(

)print

('啤酒炸雞走起來!'

)

3.event事件

def

do(event, name)

:print

('{}號車主就位'

.format

(name)

) event.wait(

)# 所有執行緒執行都這裡都在等待

event_obj = threading.event(

)for i in

range(1

,5):

t = threading.thread(target=do, args=

(event_obj, i)

) t.start(

) time.sleep(

0.1)

print

("倒計時"

)for i in

range(3

,0,-

1):print

(i) time.sleep(1)

event_obj.

set(

)print

('出發'

)

4.condition條件

import threading

import time

defseeker

(cond, name)

: time.sleep(2)

cond.acquire(

)print

('%s :我已經把眼睛蒙上了!'

% name)

cond.notify(

) cond.wait(

)for i in

range(2

):print

('%s is finding!!!'

% name)

time.sleep(1)

cond.notify(

) cond.release(

)print

('%s :哈哈,我贏了!'

% name)

defhider

(cond, name)

: cond.acquire(

) cond.wait(

)for i in

range(2

):print

('%s is hiding!!!'

% name)

time.sleep(1)

print

('%s :我已經藏好了,你快來找我吧!'

% name)

cond.notify(

) cond.wait(

) cond.release(

)print

('%s :被你找到了,唉~^~!'

% name)

cond = threading.condition(

)seeker = threading.thread(target=seeker, args=

(cond,

'seeker'))

hider = threading.thread(target=hider, args=

(cond,

'hider'))

seeker.start(

)hider.start(

)

CentOS守護程序設定

實際專案中需要將某一程序設定開機啟動,且程序異常掛掉後可以自動恢復的功能。同事介紹了乙個方法,如下 1 編輯需要執行的守護程序檔案 root datanode5 kafka 2.9.2 0.8.1.1 vi etc init kafka.conf start on runlevel 12345 re...

Linux程序託管與守護程序設定

引言 利用init進行程序託管 系統啟動時,init程式根據 etc inittab檔案的配置,拉起系統服務 getty登陸終端,自定義的程序同樣也可交由init程式管理。最簡單的方法,是在 etc inittab檔案中新增一條語句 zz 2345 respawn tmp lx test init該...

設定php指令碼為守護程序

建立test.php指令碼 usr bin php while true 守護程序命令 php test.php dev null dev nul是指指令碼輸出列印到空裝置,也就是不記錄,為後台執行模式 建立服務退出重啟指令碼 bin bash alive ps aux grep test.php ...