Các mã sau đây bị treo mà không làm bất cứ điều gì trong python 3.2.2 trong linux:Tại sao tkinter không chơi độc đáo với đa xử lý?
import tkinter
from multiprocessing import Process
def f():
root = tkinter.Tk()
label = tkinter.Label(root)
label.pack()
root.mainloop()
p = Process(target=f)
p.start()
Thông tin duy nhất tôi đã tìm thấy về vấn đề này là issue 5527, trong đó cần lưu ý rằng vấn đề là với tkinter
được nhập khẩu trước quy trình được chia nhỏ, có thể sửa bằng cách nhập tkinter
bên trong hàm f
và sự cố xảy ra trong Linux nhưng không phải là Solaris.
Có ai biết chính xác điều gì đang gây ra sự cố này không và liệu nó có chủ ý hoặc cuối cùng sẽ được khắc phục không? Có cách nào khác ngoài việc nhập tkinter
tại địa phương ở mọi nơi tôi cần (có vẻ như kiểu xấu) không? Có bất kỳ mô-đun nào khác có vấn đề tương tự với đa xử lý không?
-0. Bạn biết vấn đề. Bạn biết rằng một báo cáo lỗi đã được đệ trình. Bạn biết cách giải quyết. Câu hỏi lớn khác duy nhất là "Làm bất kỳ mô-đun nào khác có vấn đề tương tự với đa xử lý?", Có vẻ như một chút mở kết thúc. –
@StevenRumbalski: Tôi không biết vấn đề gì - tôi không biết tkinter đang làm gì không hoạt động ở đây, hoặc tại sao nó phụ thuộc vào nền tảng. Báo cáo lỗi đã được đệ trình cách đây hơn 3 năm, và không có dấu hiệu cho thấy bất kỳ ai biết tại sao (hoặc dưới chính xác điều kiện nào) điều này xảy ra hoặc cách khắc phục. Có lẽ câu hỏi cuối cùng của tôi cần phải đọc "là có bất kỳ mô-đun thư viện chuẩn nào khác không thể được nhập trước khi tiến hành một quá trình", cụ thể hơn một chút không. – James