Tôi đang cố gắng chạy một ứng dụng bên ngoài bằng Python với subprocess.call. Từ những gì tôi đã đọc nó subprocess.call không phải là nghĩa vụ phải chặn trừ khi bạn gọi Popen.wait, nhưng đối với tôi nó đang bị chặn cho đến khi ứng dụng bên ngoài thoát. Làm thế nào để sửa lỗi này?Python subprocess.call chặn
Trả lời
Mã trong subprocess
thực sự khá đơn giản và dễ đọc. Chỉ cần xem phiên bản 3.3 hoặc 2.7 (nếu thích hợp) và bạn có thể biết nó đang làm gì.
Ví dụ, call
trông như thế này:
def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
"""
with Popen(*popenargs, **kwargs) as p:
try:
return p.wait(timeout=timeout)
except:
p.kill()
p.wait()
raise
Bạn có thể làm điều tương tự mà không gọi wait
. Tạo một số Popen
, đừng gọi số wait
vào đó và đó chính là điều bạn muốn.
Bạn đang đọc tài liệu sai. Theo họ:
subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
Chạy lệnh được mô tả bởi args. Chờ lệnh hoàn thành, sau đó trả về thuộc tính returncode.
Ồ, được rồi. Làm thế nào để sao chép các chức năng của, nói, gọi os.spawnl với các tùy chọn P_NOWAIT? – dpitch40
@ dpitch40 - http://docs.python.org/2/library/subprocess.html#replacing-the-os-spawn-family. –
- 1. Python subprocess.call và subprocess.Popen stdout
- 2. Python: subprocess.call bị hỏng ống
- 3. gọi rsync từ python subprocess.call
- 4. Python: subprocess.Popen và subprocess.call treo
- 5. Python subprocess.call() thất bại khi sử dụng pythonw.exe
- 6. Python: ulimit và tốt đẹp cho subprocess.call/subprocess.Popen?
- 7. Xử lý các thư mục với dấu cách Python subprocess.call()
- 8. subprocess.call env var
- 9. Có phiên bản ngầm của subprocess.call không?
- 10. Unicode filename để trăn subprocess.call()
- 11. Windows không thể tìm thấy file trên subprocess.call()
- 12. Các sự cố khi sử dụng subprocess.call() bằng Python 2.7.2 trên Windows
- 13. virtualenv và subprocess.call() trong môi trường hỗn hợp Python 2.7/3.3
- 14. Làm cách nào để chuyển hướng stdout sang tệp khi sử dụng subprocess.call trong python?
- 15. Calling ứng dụng từ subprocess.call với đối số
- 16. Không chặn các ổ cắm python
- 17. Ngăn chặn lỗi mã hóa bằng Python
- 18. chờ đợi chặn Non trong python
- 19. Gọi phương thức chặn trong Python
- 20. Ngăn chặn nhập khẩu bằng Python
- 21. Giá trị trả về của subprocess.call() là gì?
- 22. Subprocess.call có thể được gọi mà không cần chờ quá trình kết thúc không?
- 23. Python: subprocess.call, stdout thành file, stderr để tập tin, hiển thị stderr trên màn hình trong thời gian thực
- 24. Đàn áp đầu ra trong python subprocess gọi
- 25. Chặn khối chấp nhận Python - ngăn ứng dụng thoát khỏi
- 26. ngăn chặn subprocess.Popen từ hiển thị đầu ra trong python
- 27. Ngăn chặn một lớp từ instantiation trực tiếp trong Python
- 28. C#: tương đương của các thử python/catch/khác chặn
- 29. Ngăn chặn giao diện web của Python từ trình duyệt
- 30. Proxy bị xoắn Python - cách chặn các gói
Hữu ích, nhưng tăng dần. – dpitch40