我有以下python脚本。我想在每10秒钟后重复执行timer
函数,这是我异步运行的。我查看了post1和post2,但他们没有返回任何值。
import threading
def timer(bar, baz):
print 'hello {0}'.format(bar)
return 'foo' + baz
from multiprocessing.pool import ThreadPool
pool = ThreadPool(processes=1)
async_result = pool.apply_async(timer, ('world', 'foo'))
return_val = async_result.get()
print return_val
当主线程还在做其他工作时,有没有办法在每t个时间间隔后获取值?
答案 0 :(得分:0)
使用您链接的内容进行处理的一种方法:
from threading import Timer
from multiprocessing.pool import ThreadPool
from time import sleep
def getLast():
global got
Timer(10,getLast).start()
got = async_result.get()
def action(bar, baz):
print 'hello {0}'.format(bar)
return 'foo ' + baz
pool = ThreadPool(processes=1)
async_result = pool.apply_async(action, ('world', 'foo'))
Timer(10,getLast).start()
string = 'a'
while True:
got = None
while got is None:
sleep(2)
print 'Doing stuff'
print 'Got:',got
async_result = pool.apply_async(action, ('world', 'foo '+string))
string +='a'
got = None
内部同时模拟主线程'做东西',每10秒你应该从async_result获得一个新结果,然后跳转开始一个新的非阻塞运行。外部循环只是让主线程保持运行。