我需要在一段时间后清除文本文件的方法。这就是我到目前为止所拥有的
private Thread fileCleaner;
public void FileCleaner()
{
fileCleaner = new Thread(new ThreadStart(this.Run))
}
因此,在请求武器将武器写入该列表后,这是将先前的武器列表读入文件。一旦我这样做,我有一个文件,如果我保存每一个请求,将很快得到满,这就是为什么我需要每隔X个时间清理它。
可以这样做吗?
Thread.Sleep();
然后只有一个运行函数,如果它是真的它只会写入文件然后使用
import datetime as dt
import tensorflow as tf
import tensorflow.contrib.slim as slim
from tensorflow.contrib.slim.nets import resnet_v1
from MyDataset import MyDataset
from TrainParams import TrainParams
dataset = MyDataset()
train_param = TrainParams()
#tf.device('/gpu:0')
num_classes = 15
inputs = tf.placeholder(tf.float32, shape=[1, None, None, 3])
with slim.arg_scope(resnet_v1.resnet_arg_scope(False)):
mean = tf.constant([123.68, 116.779, 103.939],
dtype=tf.float32, shape=[1, 1, 1, 3], name='img_mean')
im_centered = inputs - mean
net, end_points = resnet_v1.resnet_v1_101(im_centered,
global_pool=False, output_stride=16)
pred_upconv = slim.conv2d_transpose(net, num_classes,
kernel_size = [3, 3],
stride = 2,
padding='SAME')
targets = tf.placeholder(tf.float32, shape=[1, None, None, num_classes])
loss = slim.losses.sigmoid_cross_entropy(pred_upconv, targets)
log_dir = 'logs/'
variables_to_restore = slim.get_variables_to_restore(include=["resnet_v1"])
restorer = tf.train.Saver(variables_to_restore)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
sess.run(tf.initialize_local_variables())
restorer.restore(sess, '/path/to/ResNet-101.ckpt')
optimizer = tf.train.GradientDescentOptimizer(learning_rate=.001)
train_step = optimizer.minimize(loss)
t1 = dt.datetime.now()
for it in range(10000):
n1=dt.datetime.now()
batch = dataset.next_batch() # my function that prepares training batch
sess.run(train_step, feed_dict={inputs: batch['inputs'],
targets: batch['targets']})
n2=dt.datetime.now()
time = (n2-n1).microseconds/(1000)
print("iteration ", it, "time", time)
我听说使用Threads时间不是一个好主意,但我不是这方面的专家。
答案 0 :(得分:4)
使用Timer,并将其Elapsed
事件的回调设置为文件清理方法。
var timer = new Timer(10000);
timer.Elapsed += (s, e) => File.Delete("C:\\your_file.txt");
timer.Enabled = true;
如果您需要停止计时器,请将timer.Enabled
设置为false
。
答案 1 :(得分:2)
非常相似的问答:
Delete files from the folder older than 4 days
相关答案:
我建议使用System.Threading.Timer来做这样的事情。这是一个示例实现:
System.Threading.Timer DeleteFileTimer = null; private void CreateStartTimer() { TimeSpan InitialInterval = new TimeSpan(0,0,5); TimeSpan RegularInterval = new TimeSpan(5,0,0); DeleteFileTimer = new System.Threading.Timer(QueryDeleteFiles, null, InitialInterval, RegularInterval); } private void QueryDeleteFiles(object state) { //Delete Files Here... (Fires Every Five Hours). //Warning: Don't update any UI elements from here without Invoke()ing System.Diagnostics.Debug.WriteLine("Deleting Files..."); } private void StopDestroyTimer() { DeleteFileTimer.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite); DeleteFileTimer.Dispose(); }
这样,您可以轻松地在Windows服务中运行文件删除代码。