【发布时间】:2020-04-02 10:35:21
【问题描述】:
代码如下:
import os
import asyncio
async def func_placing_sell_orders():
prev_final_stocks_list_state = os.path.getmtime('stock_data//final_stocks_list.json')
print('i run once')
while True:
if (prev_final_stocks_list_state != os.path.getmtime('stock_data//final_stocks_list.json')):
prev_final_stocks_list_state = os.path.getmtime('stock_data//final_stocks_list.json')
print('here')
asyncio.get_event_loop().run_until_complete(func_placing_sell_orders())
简化版:
import os
def simple():
state = os.path.getmtime('file.json')
print('i run once')
while True:
if (state != os.path.getmtime('file.json')):
state = os.path.getmtime('file.json')
print('here')
simple()
这是打印出来的:
i run once
here
here
这里,每次保存文件时都会打印两次。我跑来检查以前和当前修改时间之间的时间,它总是不同的,这意味着每次保存它应该只运行一次。
这太基本了,我不明白为什么我会得到这个结果。请发送帮助
【问题讨论】:
-
我有点惊讶它 only 运行了两次,因为它在无限循环中被调用......我不明白你为什么使用
async函数,你的函数中没有任何异步。 -
不是响应,是代码与报错不符的注释,表示求助请求不连贯。此外,示例代码根本无法运行。在 10% 的相关信息存在而 90% 的信息缺失时协助解决问题是很困难的。
-
@the_begging_beginner 尽量礼貌一点。 你是寻求帮助的人。
-
其他东西正在修改文件。当我如图所示运行您的简化示例时(将
while True替换为for _ in range(10),我看不到'here'打印根本。
标签: python asynchronous last-modified