這與this question有關,但採用不同的方式。如何在python中進行分叉或非阻塞系統調用
在Ubuntu中,我使用Autokey,它使用python自動執行它所觀察的按鍵。所以我有<super>+e
映射到打開Gedit,<shift>+<super>+3
打開OOwriter等等。當我做這些調用時,我不能再創建另一個,直到之前的程序調用已經退出。
下面是它的執行腳本的樣本:
import subprocess
subprocess.call("/opt/openoffice.org3/program/scalc")
...相同的行爲使用:
import os
os.system("/opt/openoffice.org3/program/scalc")
這一切都在我以前的Ubuntu 10.04LTS工作順利,但因爲事情已經改變那麼我就不能重複打這些電話了。
請問如何在不等待程序退出的情況下如何分叉或執行某些操作以從該subprocess.call()中「取回」?我試過的nohup和backgrounding /opt/openoffice.org3/program/scalc &
但那些什麼都不做(可能打破在自動密鑰和PY的東西)
答:下面的答案其實並沒有工作,但讓我周圍窺探更多,我發現了另一個SO answer哪些工作適合我的情況!
#Enter script code -- mapped to <super>+e
import thread
thread.start_new_thread(os.system,('gedit',))
這完全工作!我連續擊中<super>+e
2或3次,並不斷添加標籤到gedit。 :)此腳本使Autokey的行爲與在命令行中輸入引號的命令一樣。
感謝您的回答,我會嘗試。 –