如何解决如何与另一个并行运行内部循环?
我想从花药循环中启动一个循环,并使其与父循环并行运行。尽管我不确定该怎么做。
在我的程序中,我使用TUI的curses选择要播放歌曲的音频文件,而在播放歌曲时,我想每秒在屏幕上绘制位置时间。这是我程序的关键:
初始化
import curses
from time import sleep
# music player with is_playing and is_paused attributes
import player
def main(stdcr)
# turn off blinking cursos; init colors; get window size
curses.curs_set(False)
curses.init_pair(1,curses.COLOR_BLACK,curses.COLOR_WHITE)
y,x = stdscr.getmaxyx()
# init output screen; init widgets for file browser and song position
disp = curses.newwin(y,x,0)
files = disp.subpad(int(y * 0.89),int(x * 0.82),int(x * 0.19))
seek = disp.subpad(int(y * 0.11),int(y * 0.9),0)
# Main Loop,it asks for a root directory and allows user to browse files within it
curr_file = 0
contents = getdir()
browser(files,seek,contents,curr_file)
主循环
def browser(files,curr_file):
# print file contents on browser widget,highlight curr_file
print_items(files,curr_file)
while True:
key = files.getch()
is_enter = (key == curses.KEY_ENTER or key in [10,13])
...
if is_enter:
if contents[curr_file].is_dir():
# open directory
elif contents[curr_file].is_file():
playing = contents[curr_file].path
player.play(playing)
print_seek(seek,curr_file,player)
子循环
def print_seek(seek,player):
while player.is_playing:
# show "player.curr_position / player.song_length
# wait a second or so before redrawing/reprinting
sleep(0.99)
我添加了程序的init函数只是为了显示整个范围,如果这可能有助于确定是否/何时进行init线程以及将其应用于何处。
很明显,我只希望子循环在特定的情况下运行,而不总是在主循环运行的同时。
我不确定使用哪种方法以及对并发的经验如何,因此我将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。