Hướng dẫn run function every second python - chức năng chạy mỗi giây python
Nếu chương trình của bạn chưa có vòng lặp sự kiện, hãy sử dụng mô -đun lịch trình, thực hiện Trình lập lịch sự kiện có mục đích chung.
Nếu bạn đã sử dụng thư viện vòng lặp sự kiện như 7, 8, 9, 0, 1, 2 và nhiều người khác - thay vào đó, hãy lên lịch cho nhiệm vụ bằng các phương thức của Thư viện Loop Event hiện tại của bạn.Đã trả lời ngày 23 tháng 1 năm 2009 lúc 21:09Jan 23, 2009 at 21:09
25 Khóa vòng lặp thời gian của bạn vào đồng hồ hệ thống như thế này:
Martineau Huy hiệu vàng 116K2525 gold badges161 silver badges288 bronze badges Đã trả lời ngày 11 tháng 8 năm 2014 lúc 20:25Aug 11, 2014 at 20:25
Dave Rovedave RoveDave Rove 3,5531 Huy hiệu vàng13 Huy hiệu bạc2 Huy hiệu đồng1 gold badge13 silver badges2 bronze badges 18 Nếu bạn muốn một cách không chặn để thực hiện chức năng của mình theo định kỳ, thay vì một vòng lặp vô hạn chặn, tôi sẽ sử dụng bộ hẹn giờ có ren. Bằng cách này, mã của bạn có thể tiếp tục chạy và thực hiện các tác vụ khác mà vẫn có chức năng của bạn được gọi là mỗi giây. Tôi sử dụng kỹ thuật này rất nhiều để in thông tin tiến trình về các tác vụ chuyên sâu dài, CPU/Đĩa/mạng. Đây là mã tôi đã đăng trong một câu hỏi tương tự, với điều khiển start () và stop ():
Usage:
Features:
Đã trả lời ngày 11 tháng 7 năm 2016 lúc 22:15Jul 11, 2016 at 22:15
MestrelionmestrelionMestreLion 12.1k5 Huy hiệu vàng62 Huy hiệu bạc57 Huy hiệu Đồng5 gold badges62 silver badges57 bronze badges 6 Bạn có thể muốn xem xét Twisted, một thư viện mạng Python thực hiện mẫu lò phản ứng.
Trong khi "trong khi đúng: giấc ngủ (60)" có thể sẽ hoạt động có lẽ đã thực hiện nhiều tính năng mà cuối cùng bạn sẽ cần (trình nền, đăng nhập hoặc xử lý ngoại lệ như được chỉ ra bởi Bobince) và có lẽ sẽ là một giải pháp mạnh mẽ hơn
Đã trả lời ngày 23 tháng 1 năm 2009 lúc 21:14Jan 23, 2009 at 21:14
Aaron Maenpaaaaron MaenpaaAaron Maenpaa Huy hiệu vàng 117K1194 Huy hiệu bạc108 Huy hiệu đồng11 gold badges94 silver badges108 bronze badges 5 Đây là bản cập nhật cho mã từ Mestrelion tránh trôi theo thời gian. Lớp lặp lại ở đây gọi hàm đã cho mỗi giây "khoảng" theo yêu cầu của OP; Lịch trình không phụ thuộc vào thời gian của chức năng để thực thi. Tôi thích giải pháp này vì nó không có phụ thuộc thư viện bên ngoài; Đây chỉ là Python thuần túy.
Sử dụng mẫu (được sao chép từ câu trả lời của Mestrelion):
Đã trả lời ngày 5 tháng 12 năm 2016 lúc 0:22Dec 5, 2016 at 0:22
ERAOULREANOULeraoul 1.00311 huy hiệu bạc19 Huy hiệu đồng11 silver badges19 bronze badges 1
Nếu bạn muốn làm điều này mà không chặn mã còn lại của mình, bạn có thể sử dụng nó để cho nó chạy trong luồng của riêng mình:
Giải pháp này kết hợp một số tính năng hiếm khi được tìm thấy kết hợp trong các giải pháp khác:
Đã trả lời ngày 12 tháng 4 năm 2018 lúc 16:31Apr 12, 2018 at 16:31
AlfealfeAlfe 53,9K19 Huy hiệu vàng100 Huy hiệu bạc154 Huy hiệu đồng19 gold badges100 silver badges154 bronze badges 9 Cách tôi tin là dễ dàng hơn:
Bằng cách này, mã của bạn được thực thi, sau đó nó chờ 60 giây sau đó nó thực hiện lại, chờ đợi, thực thi, v.v ... không cần phải làm phức tạp mọi thứ: D
Adrian p 6.4594 Huy hiệu vàng37 Huy hiệu bạc55 Huy hiệu Đồng4 gold badges37 silver badges55 bronze badges Đã trả lời ngày 4 tháng 11 năm 2012 lúc 10:26Nov 4, 2012 at 10:26
ItxakaitxakaItxaka 7496 Huy hiệu bạc10 Huy hiệu đồng6 silver badges10 bronze badges 3 Tôi đã kết thúc bằng cách sử dụng mô -đun lịch trình. API là tốt đẹp. 0Đã trả lời ngày 5 tháng 12 năm 2019 lúc 21:44Dec 5, 2019 at 21:44
Liên minh tìm kiếmUnion find 7.36413 Huy hiệu vàng57 Huy hiệu bạc103 Huy hiệu Đồng13 gold badges57 silver badges103 bronze badges 3 Giải pháp linh hoạt thay thế là apscheduler. 1 2Ngoài ra, Apscheduler cung cấp rất nhiều lịch trình như sau.
Đã trả lời ngày 30 tháng 11 năm 2020 lúc 5:18Nov 30, 2020 at 5:18
1 Tôi đã phải đối mặt với một vấn đề tương tự một thời gian trở lại. Có thể là http://cronus.readthedocs.org có thể giúp đỡ? Đối với v0.2, đoạn trích sau đây hoạt động 3Đã trả lời ngày 6 tháng 6 năm 2014 lúc 18:21Jun 6, 2014 at 18:21
AnayanayAnay 2092 Huy hiệu bạc6 Huy hiệu Đồng2 silver badges6 bronze badges Sự khác biệt chính giữa điều đó và Cron là một ngoại lệ sẽ giết chết daemon cho tốt. Bạn có thể muốn kết thúc với một người bắt và logger ngoại lệ. Đã trả lời ngày 23 tháng 1 năm 2009 lúc 21:12Jan 23, 2009 at 21:12
Bobincebobincebobince 521K103 Huy hiệu vàng648 Huy hiệu bạc827 Huy hiệu Đồng103 gold badges648 silver badges827 bronze badges Nếu trôi dạt không phải là một mối quan tâm 4Mà không đồng bộ hóa ra. 5Nếu nhiệm vụ được chạy mất một khoảng thời gian đáng kể, thì khoảng thời gian sẽ trở thành 2 giây + thời gian nhiệm vụ, vì vậy nếu bạn cần lập lịch chính xác thì điều này không dành cho bạn. Lưu ý cờ 2 có nghĩa là chủ đề này sẽ không chặn ứng dụng tắt. Ví dụ, đã có vấn đề trong đó 3 sẽ treo vô thời hạn sau khi chạy các bài kiểm tra chờ đợi điều này chấm dứt.Đã trả lời ngày 21 tháng 5 năm 2020 lúc 15:19May 21, 2020 at 15:19
Adam Hughesadam HughesAdam Hughes 13.4K10 Huy hiệu vàng75 Huy hiệu bạc116 Huy hiệu đồng10 gold badges75 silver badges116 bronze badges 7
Đơn giản chỉ cần sử dụng 6Đã trả lời ngày 11 tháng 5 năm 2021 lúc 9:45May 11, 2021 at 9:45
SwadeshiswadeshiSwadeshi 1.52620 huy hiệu bạc32 huy hiệu đồng20 silver badges32 bronze badges 1 Một câu trả lời có thể: 7Đã trả lời ngày 24 tháng 3 năm 2017 lúc 6:56Mar 24, 2017 at 6:56
sksskssks 1971 Huy hiệu vàng3 Huy hiệu bạc14 Huy hiệu đồng1 gold badge3 silver badges14 bronze badges 3 Tôi sử dụng phương thức tkinter sau (), không "đánh cắp trò chơi" (như mô -đun lịch trình được trình bày trước đó), tức là nó cho phép những thứ khác chạy song song:sched module that was presented earlier), i.e. it allows other things to run in parallel: 8 4 và 5 có thể chạy song song và trong bất kỳ tốc độ khoảng thời gian nào. Ở đây, cái thứ 2 sẽ được thực thi nhanh gấp đôi. Cũng như tôi đã sử dụng một bộ đếm đơn giản làm điều kiện để chấm dứt một trong hai chức năng. Bạn có thể sử dụng bất kỳ cuộc tranh luận nào khác mà bạn thích hoặc không nếu bạn có chức năng chạy cho đến khi chương trình chấm dứt (ví dụ: đồng hồ).Đã trả lời ngày 14 tháng 3 năm 2018 lúc 8:27Mar 14, 2018 at 8:27
ApostolosapostolosApostolos 2.91721 Huy hiệu bạc27 Huy hiệu đồng21 silver badges27 bronze badges 3 Đây là phiên bản thích nghi với mã từ Mestrelion. Ngoài chức năng gốc, mã này: 1) Thêm First_Interval được sử dụng để bắn bộ hẹn giờ tại một thời điểm cụ thể (người gọi cần tính toán First_interval và chuyển vào) 2) Giải quyết điều kiện chủng tộc trong mã gốc. Trong mã gốc, nếu luồng điều khiển không thể hủy bộ hẹn giờ đang chạy ("Dừng bộ đếm thời gian và hủy bỏ hành động của bộ hẹn giờ. Điều này sẽ chỉ hoạt động nếu bộ đếm thời gian vẫn đang trong giai đoạn chờ của nó." Được trích dẫn từ https: // docs.python.org/2/l Library/threading.html), bộ hẹn giờ sẽ chạy vô tận. 9Đã trả lời ngày 10 tháng 9 năm 2018 lúc 9:55Sep 10, 2018 at 9:55
DPROCDPROCdproc 716 Huy hiệu Đồng6 bronze badges Đây là một giải pháp khác mà không cần sử dụng bất kỳ kẻ bất hợp pháp nào. 0Đã trả lời ngày 20 tháng 5 năm 2020 lúc 17:49May 20, 2020 at 17:49
DATDATDat 4.8752 Huy hiệu vàng28 Huy hiệu bạc 30 Huy hiệu Đồng2 gold badges28 silver badges30 bronze badges Tôi sử dụng điều này để gây ra 60 sự kiện mỗi giờ với hầu hết các sự kiện xảy ra với cùng một số giây sau toàn bộ phút: 1Tùy thuộc vào điều kiện thực tế, bạn có thể nhận được ve có độ dài: 2Nhưng vào cuối 60 phút, bạn sẽ có 60 ve; và hầu hết trong số họ sẽ xảy ra ở độ lệch chính xác đến phút bạn thích. Trên hệ thống của tôi, tôi nhận được sự trôi dạt điển hình của <1/20 của một giây cho đến khi cần phải điều chỉnh. Ưu điểm của phương pháp này là độ phân giải của sự trôi dạt đồng hồ; Điều này có thể gây ra các vấn đề nếu bạn đang làm những việc như nối thêm một mục mỗi lần đánh dấu và bạn mong đợi 60 mặt hàng được thêm vào mỗi giờ. Việc không tính đến sự trôi dạt có thể gây ra các chỉ dẫn thứ cấp như di chuyển trung bình để xem xét dữ liệu quá sâu vào quá khứ dẫn đến đầu ra bị lỗi. Đã trả lời ngày 21 tháng 2 năm 2017 lúc 13:43Feb 21, 2017 at 13:43
litepresencelitepresencelitepresence 2.9831 Huy hiệu vàng26 Huy hiệu bạc35 Huy hiệu Đồng1 gold badge26 silver badges35 bronze badges ví dụ: hiển thị giờ địa phương hiện tại 3Đã trả lời ngày 29 tháng 9 năm 2017 lúc 18:13Sep 29, 2017 at 18:13
4Đã trả lời ngày 28 tháng 8 năm 2018 lúc 10:59Aug 28, 2018 at 10:59
1 Tôi nghĩ rằng nó phụ thuộc vào những gì bạn muốn làm và câu hỏi của bạn không chỉ định nhiều chi tiết. Đối với tôi, tôi muốn thực hiện một hoạt động đắt tiền trong một trong các quy trình đã đa luồng của tôi. Vì vậy, tôi có quy trình lãnh đạo đó kiểm tra thời gian và chỉ cô ấy làm OP đắt tiền (kiểm tra một mô hình học tập sâu). Để làm điều này, tôi tăng bộ đếm để đảm bảo 5 sau đó 10 sau đó 15 giây đã vượt qua để tiết kiệm sau mỗi 5 giây (hoặc sử dụng số học mô -đun với Math.Floor): 5 6Đối với tôi kiểm tra câu lệnh IF là những gì tôi cần.Có các chủ đề, bộ lập lịch trong mã đa GPU đa biến đã phức tạp của tôi không phải là một sự phức tạp mà tôi muốn thêm vào nếu tôi có thể tránh nó và có vẻ như tôi có thể.Kiểm tra ID công nhân rất dễ dàng để đảm bảo chỉ có 1 quy trình đang thực hiện việc này. Lưu ý tôi đã sử dụng các câu lệnh in thực sự để thực sự đảm bảo thủ thuật arithemic mô -đun hoạt động vì kiểm tra thời gian chính xác rõ ràng là không hoạt động!Nhưng với sự thú vị của tôi làm tôi ngạc nhiên khi sàn nhà đã làm được điều đó.
Dharman ♦♦ 28.5K21 Huy hiệu vàng78 Huy hiệu bạc129 Huy hiệu đồng21 gold badges78 silver badges129 bronze badges Đã trả lời ngày 19 tháng 5 năm 2021 lúc 16:48May 19, 2021 at 16:48
Charlie Parkercharlie ParkerCharlie Parker 10K46 Huy hiệu vàng164 Huy hiệu bạc282 Huy hiệu Đồng46 gold badges164 silver badges282 bronze badges |