我可以用.txt文件來做到這一點,當發生什麼事情時它會寫「ok」,而其他程序會讀取它,如果.txt文件裏面有「ok」,則會執行某些操作。但是,我想知道如果我能用另一種方式做。有沒有辦法在發生事件時發送信號,並接收信號並執行其他操作?
回答
您可以使用信號,例如, USR1,但我認爲你不能在Python中提高信號。 現在您可以使用命名管道代替通過文件進行通信。命名管道將提供一些額外的功能,請參見最後一段。
您打開管道作爲普通文件,然後按照現在的方式進行寫入和讀取。你通過mkfifo filename
創建管道,也可以在你的python程序中創建。爲演示兩個示例程序:
發件人:
fdw= os.open("./mypipe", os.O_WRONLY)
while (1):
try:
os.write(fdw, "OK\n")
except OSError, e:
if e.errno==errno.EPIPE:
#Receiver closed the pipe
print "Reader closed pipe\n"
sys.exit(0)
else:
#some other os problem
print os.strerror(e.errno)
time.sleep(3)
接收機:
fdr= os.open("./mypipe", os.O_RDONLY | os.O_NONBLOCK)
while (1):
try:
s= os.read(fdr, 10)
print s
except OSError, e:
if e.errno==errno.EBUSY:
print "nothing to read yet\n"
else:
print os.strerror(e.errno)
time.sleep(1)
發件人打開阻塞管道,所以你會得到一個異常,如果接收器關閉管道,通常當終止。閱讀器打開一個非阻塞管道,以便在等待發件人寫入的任何內容時不會掛起。當發送方或接收方關閉一個管道端時,阻塞/非阻塞組合會產生不同的響應。如果存在管道溢出的可能性(寫入千字節,沒有任何讀取),您可能想要打開寫入結束非阻塞。
看來你想使用一個函數。 我假設你在這樣做各種測試的線路做一些事情,如果這是真的,每個人做不同的東西......
def function(parameters):
的參數是在函數中使用的對象:
def fib(a, b, c):
x=a*b*c*10
print x
這只是一個簡單的功能,但你可以做很複雜的事情。
我把這個網頁轉交給TutorialsPoint:Python Functions。
如果您在另一個程序的功能,也許打開文件:
open(file_name)
function(parameters)
蟒蛇後打開該文件,只需輸入功能正常。這應該工作。
我知道如何創建一個函數,我只希望它在另一個Python程序到達時執行... – Antoni4040
TutorialsPoint的特殊-1。它充滿了錯誤。躲開它。 –
- 1. 有沒有辦法假髮射信號?
- 2. DBus Glib發送信號 - 沒有信號被髮射
- 3. QListWidget發送沒有項目doubleClicked信號
- 4. 啓動一個可執行文件並在運行時發送信號
- 5. 有沒有辦法將升壓信號直接連接到另一個信號?
- 6. 有沒有辦法列出Django信號?
- 7. 有沒有辦法在VBS中執行非阻塞IO或以某種方式向COM事件發出信號?
- 8. 父發送信號並等待響應
- 9. 停止執行php代碼並將信號發送到JavaScript
- 10. 有沒有辦法將信號發送給所有打開fd的線程?
- 11. 有沒有辦法在Windows上收聽信號
- 12. 如何在其成員發出信號時發出信號?
- 13. 發送長短信並接收錯誤
- 14. 有沒有辦法將發送的原始短信和Twilio號碼收到的回覆短信關聯起來?
- 15. 信號量併發性
- 16. 當執行'mongorestore'時,MongoDB發生死鎖並且沒有其他事情
- 17. 每次發送事件信號兩次
- 18. 在等待超時時發送信號燈信號
- 19. 如何讓gdb在接收信號時發送外部通知?
- 20. 如何在Python中發送和接收實時信號`sigqueue()`?
- 21. 行爲時,多個信號發送
- 22. 如何發送短信並在iPhone sdk中接收短信?
- 23. 如果沒有線程正在等待併發送條件信號,會發生什麼情況?
- 24. RACCommand初始化器信號沒有命中執行信號
- 25. 「接受事件」和「發送信號」動作的活動圖的有效性
- 26. android短信發送到收到號碼
- 27. 收聽短信,發送時沒有任何端口號在j2me應用程序
- 28. 向所有主題發送信號
- 29. PyDispatch接收多個信號時,只有1發
- 30. 如何「發信號」感興趣的子進程(沒有信號)?
這是有點寬泛 - 你可以進入更多的細節?你是否試圖在兩個Python程序之間進行通信,或者是一個Python程序和另一種語言編寫的程序,或者一個Python程序和一個你無法控制的程序,這些程序會以某種方式期待事情? –
超過兩個python程序在同一時間工作... – Antoni4040
什麼樣的「信號」? – martineau