Tôi muốn thực hiện nhiều lần một tiến trình con càng nhanh càng tốt. Tuy nhiên, đôi khi quá trình này sẽ mất quá nhiều thời gian, vì vậy tôi muốn giết nó. tôi sử dụng signal.signal (...) như dưới đây:Giết hoặc chấm dứt quá trình con khi hết thời gian chờ?
ppid=pipeexe.pid
signal.signal(signal.SIGALRM, stop_handler)
signal.alarm(1)
.....
def stop_handler(signal, frame):
print 'Stop test'+testdir+'for time out'
if(pipeexe.poll()==None and hasattr(signal, "SIGKILL")):
os.kill(ppid, signal.SIGKILL)
return False
nhưng đôi khi mã này sẽ cố gắng để ngăn chặn các vòng tiếp theo từ thực hiện. Dừng kiểm tra/home/lu/workspace/152/treefit/test2cho thời gian ra /bin/sh:/home/lu/không gian làm việc/153/squib_driver: không tìm thấy --- đây là lần thực hiện tiếp theo; chương trình dừng lại sai.
Có ai biết cách giải quyết vấn đề này không? Tôi muốn dừng lại trong thời gian không thực hiện 1 giây time.sleep (n) thường đợi n giây. Tôi không muốn rằng tôi muốn nó có thể thực hiện ít hơn 1 giây
Vì vậy, về cơ bản nếu quá trình con chạy quá 1 giây, bạn muốn giết nó và bắt đầu bước tiếp theo? Điều này có đúng không? –
Làm cách nào để bạn tạo quy trình con? bởi vì nó trông giống như biểu thức __ppid = pipeexe.pid__ đang nhận tiến trình con tiếp theo sẽ được chạy !!! – mouad
Vì vậy, về cơ bản nếu quá trình con chạy quá 1 giây, bạn muốn giết nó và bắt đầu bước tiếp theo? Điều này có đúng không? vâng, đó là đúng – user504909