- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
库接受文件输入的“传统”方式是做这样的事情:
def foo(file_obj):
data = file_obj.read()
# Do other things here
客户端代码负责打开文件,找到适当的点(如果需要),然后关闭它。如果客户想给我们一个管道或套接字(或 StringIO
,就此而言),他们可以这样做,而且它就可以工作。
但这与 asyncio 不兼容,它需要更像这样的语法:
def foo(file_obj):
data = yield from file_obj.read()
# Do other things here
当然,这种语法只适用于 asyncio 对象;试图将它与传统文件对象一起使用会造成困惑。反之亦然。
更糟糕的是,在我看来,没有办法将这个 yield from
包装在传统的 .read()
方法中,因为我们需要一直 yield 到事件循环,而不仅仅是在读取发生的地方。 gevent 库确实做了类似的事情,但我不知道如何将他们的 greenlet 代码改编成生成器。
如果我正在编写一个处理文件输入的库,我应该如何处理这种情况?我需要两个版本的 foo()
函数吗?我有很多这样的功能;复制所有这些是不可扩展的。
我可以告诉我的客户开发人员使用 run_in_executor()
或类似的东西,但这感觉就像是在对抗 asyncio 而不是与它一起工作。
1 Câu trả lời
这是显式异步框架的缺点之一。与 gevent
不同,它可以在不更改任何代码的情况下对同步代码进行 monkeypatch 使其成为异步代码,您不能在不重写同步代码以使用 asyncio 的情况下使同步代码与
Và không đồng bộ
兼容.coroutineyield from
(或至少 asyncio.Futures
和回调)一直向下。
据我所知,在 không đồng bộ
和正常的同步上下文中都无法使相同的函数正常工作;任何兼容 không đồng bộ
的代码都将依赖于运行的事件循环来驱动异步部分,因此它不会在正常上下文中工作,并且同步代码总是会以阻塞结束如果事件循环在 không đồng bộ
上下文中运行。这就是为什么您通常会看到特定于 không đồng bộ
(或至少是特定于异步框架)的库版本以及同步版本。没有什么好的方法可以提供适用于两者的统一 API。
关于python - 使文件处理代码与 asyncio 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29800104/
Hôm nay tôi đã thấy một số cách khác nhau để tải tệp trong ứng dụng Java. Sự khác biệt giữa ba phần mở đầu của URL: file:/ file:// file:/// là gì? Cách sử dụng chúng được ưa chuộng nhất là gì? Cảm ơn Stefan rất nhiều vì tệp trả lời hay nhất
Hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bằng sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy câu hỏi này có thể được cải thiện và có thể mở lại, hãy truy cập
Tôi có một tệp javascript và trong phương thức đó, tôi có một phương thức "kiểm tra" nơi tôi muốn gọi một hàm C#. Hàm c# không nằm trong cùng một tệp với tệp javascript. Nó nằm trong tệp .cs. Vậy làm sao tôi có thể quản lý j
Cần kiểm tra quyền của tệp/thư mục tôi đang sử dụng //filePath = đường dẫn của tệp/thư mục bị người dùng từ chối truy cập (trong windows) Tệp fil
Tôi có rất nhiều file java trong một thư mục mà tôi muốn sử dụng trong dự án Intellij của mình. Nhưng tôi không muốn sao chép các tập tin Java vào dự án của mình mỗi khi tôi bắt đầu một dự án mới. Tôi biết tôi có thể làm điều này trong Visual Studio và
Đã đóng. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại không chấp nhận câu trả lời. Câu hỏi này có vẻ không liên quan đến một vấn đề lập trình cụ thể, một phần mềm
Tôi có 3 tệp Twig cho các thành phần: Tệp 1: {# content-here #} Tệp 2: {{ title-here }} {# content-here #}
Tôi có các tệp mod_ldap.c và mod_authnz_ldap.c. Tôi cần sử dụng các tệp mod_ldap.so và mod_authnz_ldap.so cho các lệnh Linux. Câu trả lời hay nhất từ c
Tôi muốn sử dụng PIE để làm việc với IE7 trong dự án của mình. Nhưng điều tôi không hiểu là tôi chỉ có thể sử dụng tệp .htc trên máy chủ web phải không? Tôi có thể sử dụng nó trên trang cục bộ được tải qua trình duyệt mà không cần máy chủ web không? Tôi đã thấy trong tài liệu PIE
Tôi đang nghĩ đến điều này trong một quy trình CI, trước tiên tôi phải xây dựng và thử nghiệm ứng dụng của mình và kết quả sẽ là một hình ảnh docker. Tôi tự hỏi liệu việc sử dụng môi trường xây dựng để xây dựng trên máy chủ xây dựng rồi chạy thử nghiệm có phổ biến hơn không. Có thể sử dụng tập lệnh xây dựng cho việc này. Cuối cùng, chỉ cần j
sử dụng không gian tên std; struct WebSites { chuỗi siteName; int rank; chuỗi getSiteName() {
Tôi mới làm quen với Linux và hiện đang cố gắng sử dụng khả năng lập trình API của giao diện USB-CAN của ginkgo. Để lập trình API bằng C++, họ cung cấp các tệp thư viện bao gồm ba tệp .
Tôi vừa học ngôn ngữ C và gặp phải một vấn đề khi triển khai một chương trình sử dụng tệp test.txt làm đầu vào của chương trình. Nội dung của tệp test.txt là: 1 30 30 40 50 60 2 40 30 50 60 60 3 30 20
Làm thế nào để nối hai tệp tcpdump để mỗi lưu lượng xuất hiện lần lượt trong các tệp đó? Cụ thể hơn, tôi muốn "nhân" một tệp tcpdump để tất cả các phiên sẽ được lặp lại nhiều lần theo trình tự, lần này nối tiếp lần khác. Câu trả lời tốt nhất là mergeca
Tôi có một tệp tin có tên là input.MP4 và nó bị hỏng. Đó là hình ảnh từ camera giám sát. Tôi đã thử mọi cách, chuyển đổi ffmpeg, VLC, nhưng đều không được. Tuy nhiên, tôi đã sử dụng mediainfo và exiftool và trích xuất thông tin sau
Tôi muốn làm gì? Tôi muốn giải nén một tập tin ISO và chỉnh sửa các tập tin bên trong, sau đó đóng gói lại thành một tập tin ISO. (Như bạn đã đọc) Tại sao tôi phải làm điều này? Tôi muốn bắt đầu sửa đổi PSP ISO và để làm được điều này tôi phải sử dụng tài nguyên trò chơi, Tài sản
Với một tệp gzip Z, nếu tôi giải nén nó thành Z', có cách nào tôi có thể nén lại để khôi phục lại chính xác tệp gzip Z đó không? Sau khi đọc lướt qua định dạng DEFLATE, tôi đoán là không, vì bất kỳ tệp nào cũng có thể ở định dạng DEFLATE.
Tôi phải gửi một email có tệp đính kèm từ cơ sở dữ liệu đến ID email của tôi. EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Quản trị viên Adventure Works
Tôi có một tệp M4B lớn và một tệp CUE. Tôi muốn chia nó thành nhiều tệp M4B hoặc chia nó thành nhiều tệp MP3 (ưu tiên trước đây). Tôi muốn thực hiện điều này trong dòng lệnh (OS X, nhưng có thể sử dụng Linux nếu cần) và
Câu hỏi nhanh. Tôi có một dự án với một lớp không có tệp triển khai. Sau đó trong AppDelegate tôi có: #import "AppDelegate.h" #import "SomeClass.h" @interface A
Tôi là một lập trình viên xuất sắc, rất giỏi!