簡體   English   中英

python子進程中的線程行為很奇怪

[英]Threading behavior is weird in python subprocess

所以我基本上有這樣的情況,在我的主腳本中

command = 'blender -b ' + settings.BLENDER_ROOT + 'uploadedFileCheck.blend -P ' + settings.BLENDER_ROOT + 'uploadedFileCheck.py -noaudio'
process = Popen(command.split(' ') ,stdout=PIPE, stderr=PIPE)
out, err = process.communicate()

在子流程腳本uploadFile.Check中,我有一行

exportFile(fileIn, fileOut)
Thread(target=myfunction).start()

因此,我希望在exportFile()調用之后,子進程完成或至少返回錯誤,但是似乎它也在等待線程完成。 有誰了解這種行為?

另外,如果您想知道,我將其他python文件稱為子進程,因為主腳本位於python2中,而該腳本(混合器)位於python3中,但這無關緊要(並且不能更改)

直到所有非守護進程線程都退出后,進程才會退出。 默認情況下,Python中的Thread對象創建為非守護線程。 如果您希望腳本在主線程完成后立即退出,而不是等待生成的線程完成,請在啟動它之前將Thread對象上的daemon標志設置為True

t = Thread(target=myfunction)
t.daemon = True
t.start()

請注意,這將以非優美的方式殺死守護程序線程,而不會進行任何清理。 如果您正在該線程中執行任何需要清理的工作,則應考慮采用一種方法,在該方法中向線程發出信號以使其自行關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM