2
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Dưới đây có một số mã hoạt động đầy đủ.
Tôi dự định thực thi mã này thông qua dòng lệnh, tuy nhiên tôi muốn nó kết thúc sau 60 giây.
Có ai biết cách tốt nhất để đi về điều này?
Cảm ơn trước.
import time
class listener[StreamListener]:
def on_data[self, data]:
try:
print data
saveFile = open['twitDB.csv','a']
saveFile.write[data]
saveFile.write['\n']
saveFile.close[]
return True
except BaseException, e:
print 'failed ondata,' ,str[e]
time.sleep[5]
def on_error[self, status]:
print status
Các doanh nghiệp vừa và nhỏ
4.05517 Huy hiệu bạc26 Huy hiệu đồng17 silver badges26 bronze badges
Hỏi ngày 25 tháng 12 năm 2013 lúc 18:25Dec 25, 2013 at 18:25
8
Thử thứ này đi:
import os
import time
from datetime import datetime
from threading import Timer
def exitfunc[]:
print "Exit Time", datetime.now[]
os._exit[0]
Timer[5, exitfunc].start[] # exit in 5 seconds
while True: # infinite loop, replace it with your code that you want to interrupt
print "Current Time", datetime.now[]
time.sleep[1]
Có một số ví dụ khác trong câu hỏi StackOverflow này: Thực hiện các hành động định kỳ trong Python
Tôi nghĩ rằng việc sử dụng os._exit[0]
không được khuyến khích, nhưng tôi không chắc chắn. Một cái gì đó về điều này không cảm thấy kosher. Nó hoạt động, mặc dù.
Đã trả lời ngày 25 tháng 12 năm 2013 lúc 18:42Dec 25, 2013 at 18:42
Ehtesh Choudhuryehtesh ChoudhuryEhtesh Choudhury
7.2525 huy hiệu vàng42 Huy hiệu bạc47 Huy hiệu đồng5 gold badges42 silver badges47 bronze badges
9
Bạn có thể chuyển mã của mình vào một luồng daemon và thoát khỏi luồng chính sau 60 giây:
#!/usr/bin/env python
import time
import threading
def listen[]:
print["put your code here"]
t = threading.Thread[target=listen]
t.daemon = True
t.start[]
time.sleep[60]
# main thread exits here. Daemon threads do not survive.
Đã trả lời ngày 25 tháng 12 năm 2013 lúc 19:26Dec 25, 2013 at 19:26
JFSJFSjfs
383K182 Huy hiệu vàng948 Huy hiệu bạc1619 Huy hiệu đồng182 gold badges948 silver badges1619 bronze badges
11
Sử dụng signal.ALARM
để được thông báo sau một thời gian xác định.
import signal, os
def handler[signum, frame]:
print '60 seconds passed, exiting'
cleanup_and_exit_your_code[]
# Set the signal handler and a 60-second alarm
signal.signal[signal.SIGALRM, handler]
signal.alarm[60]
run_your_code[]
Từ ví dụ của bạn, không rõ ràng mã sẽ làm chính xác như thế nào, nó sẽ chạy như thế nào và loại vòng lặp nào sẽ được lặp lại. Nhưng bạn có thể dễ dàng thực hiện tín hiệu ALARM
để được thông báo sau khi hết thời gian chờ.
Đã trả lời ngày 25 tháng 12 năm 2013 lúc 19:17Dec 25, 2013 at 19:17
TishotishoTisho
7.9906 Huy hiệu vàng42 Huy hiệu bạc52 Huy hiệu đồng6 gold badges42 silver badges52 bronze badges
2
Đây là cách làm thời gian chờ yêu thích của tôi.
def timeout[func, args=None, kwargs=None, TIMEOUT=10, default=None, err=.05]:
if args is None:
args = []
elif hasattr[args, "__iter__"] and not isinstance[args, basestring]:
args = args
else:
args = [args]
kwargs = {} if kwargs is None else kwargs
import threading
class InterruptableThread[threading.Thread]:
def __init__[self]:
threading.Thread.__init__[self]
self.result = None
def run[self]:
try:
self.result = func[*args, **kwargs]
except:
self.result = default
it = InterruptableThread[]
it.start[]
it.join[TIMEOUT* [1 + err]]
if it.isAlive[]:
return default
else:
return it.result
Đã trả lời ngày 25 tháng 12 năm 2013 lúc 19:53Dec 25, 2013 at 19:53
5
Tôi hy vọng đây là một cách dễ dàng để thực hiện chức năng định kỳ và kết thúc sau 60 giây:
import time
import os
i = 0
def executeSomething[]:
global i
print[i]
i += 1
time.sleep[1]
if i == 10:
print['End']
os._exit[0]
while True:
executeSomething[]
Đã trả lời ngày 28 tháng 8 năm 2019 lúc 11:58Aug 28, 2019 at 11:58
DebadattadeBadattaDebadatta
1.7322 huy hiệu vàng10 Huy hiệu bạc15 Huy hiệu đồng2 gold badges10 silver badges15 bronze badges